Bonjour,

En esperant être le plus clair possible :

Je souhaite créer un module permettant d'aller récupérer une liste d'information dans un grand nombre de fichier excel situé dans une arborescence du type dossier/sous-dossiers/sous-sous-dossiers/../fichier.xls

Les informations récupérées doivent être listées dans les lignes et colonnes d'un classeur existant et possèdant déjà de nombreux champs informés. Il faut donc qu'une information importé des classeurs soit reconnue dans celui existant (mais mon probleme n'est pas là).

Chacun des classeurs 'Excel' ont un début de nom commun.
Ils sont également tous structurés de la même façon.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
 
Dim s As String
Dim n As Double
 
Function trouvenum_precedent(num As String) As Double ' retourne le numéro de ligne
' du numéro passé en paramètre
 
Dim c As Range
        Set c = Workbooks("donnes-recuperer.xls").Worksheets("Feuill1").Range("U:U").Find(num)
        If c Is Nothing Then
            MsgBox (num & " non trouvé ")
            trouvenum_precedent = "0"
        Else
            trouvenum_precedent = c.Row
        End If
 
End Function
 
Sub recup_donnees()
    Workbooks.Open Filename:="D:\partage\Dossier\Sous-Dossier\Sous-Sous-Dossier\Données\Annexe \01\nom1\" & "données.xls"
 
    s = Workbooks("données.xls").Worksheets("Feuil1").Cells(3, 1)
    n = InStrRev(s, " ")
    s = Right(s, Len(s) - n)
    n = trouvenum_precedent(s)
 
    For i = 52 To 71
        Workbooks("donnes-recuperer.xls").Worksheets("Feuill1").Cells(n, i) = Workbooks("données.xls").Worksheets("Feuil1").Cells(i - 47, 7)
    Next i
 
 
    Workbooks("données.xls").Close False
 
    Workbooks.Open Filename:="D:\partage\Dossier\Sous-Dossier\Sous-Sous-Dossier\Données\Annexe \01\nom1\" & "données.xls"
 
    s = Workbooks("données.xls").Worksheets("Feuil2").Cells(3, 1)
    n = InStrRev(s, " ")
    s = Right(s, Len(s) - n)
    n = trouvenum_precedent(s)
 
    For i = 72 To 87
        Workbooks("donnes-recuperer.xls").Worksheets("Feuill1").Cells(n, i) = Workbooks("données.xls").Worksheets("Feuil2").Cells(i - 67, 7)
    Next i
 
 
    Workbooks("données.xls").Close False
 
End Sub
Voilà où j'en suis.
Pour l'instant le contrat est remplit pour une seul importation.
Je voudrais savoir s'il est possible d'écrire une fonction permettant d'aller scanner les informations dans une arborescence contenant environ 200 fichiers excel.
(les fichiers excels ont en commun le début de leur nom ainsi que leur structure)

Merci.

>> imalgene