Bonjour.

Je reviens vers vous car j'ai un dernier soucis sur ma maccro.
Celle-ci me permet de boucler sur tout les fichiers excel afin de ressortir certaines informations dans un autre classeur (Recupdevis)

Ma boucle est écrite comme ceci :

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
 
Dim Dossier As String
    Dossier = "C:\Users\controlegestion\Documents\Mel\Devis"
 
Dim Fso As New Scripting.FileSystemObject
 
 
    Set Fso = CreateObject("Scripting.FileSystemObject")
 
Dim Subfolder As Scripting.Folder
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set Subfolder = Fso.GetFolder("C:\Users\controlegestion\Documents\Mel\Devis")
 
Dim Sourcefolder As Scripting.Folder
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set Sourcefolder = Fso.GetFolder("C:\Users\controlegestion\Documents\Mel\Devis")
 
Dim Filesitem
    Set Filesitem = CreateObject("Scripting.FileSystemObject")
    Set Filesitem = Fso.GetFile("C:\Users\controlegestion\Documents\Mel\Recupdevis.xlsm")
 
Dim fi1 As Object, fi2 As Object, fi3 As Object
 
'Pour tout dossier ce trouvant dans le dossier sources (devis)
    For Each fi1 In Fso.GetFolder(Dossier).SubFolders
' Pour tout fichiers se trouvant dans les dossiers (fi1), se trouvant eux même dans le dossier source (devis)
    For Each fi2 In fi1.SubFolders
' Pour tout sous-dossiers se trouvant dans les dossiers (fi1)
    For Each fi3 In fi2.Files
 
        If fi3.Type = "Feuille de calcul Microsoft Excel 97-2003" Then
 
            ' Ouvrir le fichier
            Set wbk = Workbooks.Open(fi3, 0)

Le soucis c'est qu'en réalité ça ne boucle pas sur tout. En effet, les fichiers présent a la racine ne sont pas pris en compte, seul ceux présent dans des sous-dossiers. En gros si j'ai :

[Dossier Devis]
-> [Client1]
->[Client1devisn°x]
-> Devisn°x.xls

La maccro va bien me trouver le devis n°x

Mais si j'ai
[Dossier]
-> [Client1]
-> Devisn°x.xls

La maccro va "ignoré" le fichier et donc ne jamais me ressortir les informations voulut. J'aurais put créer un sous-dossiers dans client1, mais malheureusement j'ai plus de 250 clients, et en plus je n'ai pas l'autorisation pour créer les sous-dossiers enfin, on m'interdit de toucher au réseau zcom.

J'ai bien essayer comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
'Pour tout dossier ce trouvant dans le dossier sources (devis)
    For Each fi1 In Fso.GetFolder(Dossier).SubFolders
' Pour tout fichiers se trouvant dans les dossiers (fi1), se trouvant eux même dans le dossier source (devis)
    For Each fi2 In fi1.SubFolders
' Pour tout sous-dossiers se trouvant dans les dossiers (fi1)
    For Each fi3 In fi2.Files
    For Each fi4 In fi1.Files
Mais du coup, ça ne boucle plus du tout, enfin si mais ça ne trouve rien.

Un coup de main? Merci d'avance!