import fichiers dans plusieurs dossiers

KIM

XLDnaute Accro
Bonjour les ami(e)s, Bonjour le forum,
Comme à l'habitude je reviens vers vous pour vous solliciter et je vous en remercie d'avance. Dans un dossier j'ai des sous dossiers dans lesquels j'ai beaucoup de fichiers excel. le nom de certains fichiers excel , plus de 2000, se termine par SURF.xls et possedent la meme structure de données. Je dois récupérer ces données dans le fichier nommé RecapGlobal_v1. Les données à récupérer sont de 2 types:
1- Recopier de chaque fichier ....SURF.xls les données de la ligne 9, à la colonne U, dans l'onglet RecapG du fichier RecapGlobal_v1.
2- les 7 premières lignes, col B de chaque fichier à recopier dans RecapGlobal_v1, onglet RecapSG en ligne (transposé), avec nom du fichier et nom de l'onglet copié.
voir fichier ci-joint.
Merci d'avance
KIM
 

Pièces jointes

  • RECAPDOSSIERS.zip
    24.8 KB · Affichages: 29
  • RECAPDOSSIERS.zip
    24.8 KB · Affichages: 26
  • RECAPDOSSIERS.zip
    24.8 KB · Affichages: 29

KIM

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Bonsoir Staple1600, Bonsoir les ami(e)s et le forum,
J'ai recherché tout ce we un exemple du forum à adapter à ma problématique. J'ai testé beaucoup d'exemples mais malheureusement je n'ai pas réussi résoudre mon problème.
J'ai vraiement besoin de votre aide. Lire et recopier plus de 2000 fichiers (même format) manuellement est une galère et risque d'oublier certains d'entre eux.
Dans un dossier "Racine" j'ai des sous dossiers dans lesquels j'ai beaucoup de fichiers excel. le nom de certains fichiers excel , plus de 2000, se termine par SURF.xls et possedent la meme structure de données. Je dois récupérer les données de ces fichiers sans les ouvrir dans le fichier nommé RecapGlobal_v1. Les données à récupérer sont de 2 types:
1- Recopier de chaque fichier ....SURF.xls les données de la ligne 9, à la colonne U, dans l'onglet RecapG du fichier RecapGlobal_v1.
2- les 7 premières lignes, col B de chaque fichier à recopier dans RecapGlobal_v1, onglet RecapSG en ligne (transposé), avec nom du fichier et nom de l'onglet copié.

Ci-joint un fichier RecapGlobal_v2.xls.
1- j'ai récupéré, grace au forum, l'arborescence des fichiers "*.SURF.xls" des dossiers, sous_dossiers de la racine: cf onglet "ListeF", macro "Arborescence"
2- J'ai essayé d'adapter une macro du forum pour récupérer les données des fichiers "*.SURF.xls" dans les feuilles RecapG et RecapSG avec le nom du fichier et le nom de la feuiileà recopier. Malheureusement je n'ai pas réussi.

Merci de votre aide,
KIM
 

Pièces jointes

  • RECAPDOSSIERS.zip
    61.2 KB · Affichages: 30
  • RECAPDOSSIERS.zip
    61.2 KB · Affichages: 28
  • RECAPDOSSIERS.zip
    61.2 KB · Affichages: 29

Softmama

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Bonsoir Kim, Bonsoir Staple1600,

Pas sur d'avoir fait ce qui était demandé :

Dans la feuille RecapG, un bouton sur lequel cliquer. La macro va fouiller dans le répertoire où est enregistré le fichier et dans TOUS SES SOUS REPERTOIRES. Il trouve tous les fichiers qui finissent par SURF.xls, choppe tous les noms d'onglets et copie les données utiles dans les 2 feuilles RécapG et RécapSG.

Les macros que j'ai créées sont dans le module1, j'ai enlevé les tiennes pour plus de lisibilité. Ca tient en pas trop de lignes :
VB:
Sub Recopie(Répertoire)
    Dim Fso As Scripting.FileSystemObject
    Dim RépSource As Scripting.Folder
    Dim SousRép As Scripting.Folder
    Dim Fichier As Scripting.File
    Dim i As Long, j As Long
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set RépSource = Fso.GetFolder(Répertoire)
    Application.ScreenUpdating = False
    i = 1: j = 1
    For Each Fichier In RépSource.Files
      If Right$(Fichier, 8) = "SURF.xls" Then 'Recherche des fichiers *SURF.xls
        Sheets("RecapG").Range("A" & 10 + i) = Fichier.Name
        Sheets("RecapSG").Range("A" & 10 + j) = Fichier.Name
        Workbooks.Open Filename:=Répertoire & "\" & Fichier.Name 'ouverture du fichier
        For t = 1 To ActiveWorkbook.Sheets.Count ' Récupération des noms d'onglets et des valeurs utiles
            With Workbooks("RecapGlobal_v2.xls")
                With .Sheets("RecapG")
                    .Range("B" & 10 + i) = ActiveWorkbook.Sheets(t).Name
                    Sheets(t).Range("A9").Resize(, 21).Copy Destination:=.Range("C" & 10 + i)
                    i = i + 1
                End With
                With .Sheets("RecapSG")
                    .Range("B" & 10 + i) = ActiveWorkbook.Sheets(t).Name
                    Sheets(t).Range("B1:B7").Copy
                    .Range("C10").Offset(j, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
                    j = j + 1
                End With
            End With
        Next
        ActiveWorkbook.Close False
      End If
    Next Fichier
    
    '--- Appel récursif pour lister les fichier dans les sous-répertoires ---.
    For Each SousRép In RépSource.subfolders
        Recopie SousRép.Path
    Next SousRép
End Sub

Vois si ça te convient, sinon détaille ce qui ne va pas.

[Edit] Oops oublié de joindre le fichier :p
 
Dernière édition:

KIM

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Bonjour Softmama, Staple1600, les ami(e)s et le forum,
@Softmama,
Merci pour ton aide. J'ai testé ta macro.
1- La macro ne scanne pas tous les dossiers et sous-dossiers. Il peut y avoir plusieurs niveaux de sous-dossiers. Dans l'exemple donné, j'ai 5 fichiers dont les noms se terminent par SURF.xls et la macro n'en liste que 2 seulement.
2- Dans l'onglet RecapG, la macro ne recopie qu'une ligne par fichier scanné. Normalement la macro doit recopier toutes les données à l'exception de la ligne entête.
3- Dans l'onglet RecapSG, il y a un décalage au niveau de la 2ème colonne (col B, nom de l'onglet).
Voir le résultat de la macro dans les feuiles RecapG_R et RecapSG_R.
4- Est-il possible aussi de choisir le dossier "Racine" de l'arborescence des fichiers xls car elle peut se trouver sur un serveur.

Merci d'avance de votre aide.
KIM
Merci d'avance
 

Pièces jointes

  • RecapGlobal_v2_S.zip
    30 KB · Affichages: 31

Softmama

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Bonjour,

1- La macro ne scanne pas tous les dossiers et sous-dossiers. Il peut y avoir plusieurs niveaux de sous-dossiers. Dans l'exemple donné, j'ai 5 fichiers dont les noms se terminent par SURF.xls et la macro n'en liste que 2 seulement.
Ha ? c'est curieux, je regarderai ça de plus près.

2- Dans l'onglet RecapG, la macro ne recopie qu'une ligne par fichier scanné. Normalement la macro doit recopier toutes les données à l'exception de la ligne entête.
Ha ok, j'étais pas trop sur, mais ça c'est pas un souci.

3- Dans l'onglet RecapSG, il y a un décalage au niveau de la 2ème colonne (col B, nom de l'onglet).
Voir le résultat de la macro dans les feuiles RecapG_R et RecapSG_R.
Ok, c'est noté, juste un léger paramétrage à modifier.

4- Est-il possible aussi de choisir le dossier "Racine" de l'arborescence des fichiers xls car elle peut se trouver sur un serveur.
Oui, pas de souci non plus là dessus.

Par contre, suis sous l'eau au moins ce matin, et p-ê même toute la journée, je m'y recolle dès que je peux, au pire ce soir.

++ donc.
 

Softmama

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Re,

Je suis revenu sur ton fichier en speed et concernant le :

1- La macro scannait bien tous les dossiers et sous dossiers mais les données étaient compressées dans le résultat. Erreur réparée.

2- C'est bon now

3- Je constate pas de pb ??

4- Le choix du répertoire était déjà prévu par la fonction Quelrépertoire qui était déactivée par défaut. Je te l'ai activée.

Voilà, je te laisse tester ça et n'hésite pas si pbs de nouveau.

[Edit] Re oubli du fichier :p
 
Dernière édition:

KIM

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Re, Softmama, Staple1600, et le forum

Merci pour cette nouvelle macro. Je reviens vers toi pour plusieurs choses et t'en remercie d'avance.
1- Quand je relance la macro une 2ème fois, est-il possible de vider le contenu actuel des 2 onglets en gardant bien sûr la ligne des entêtes avant de recopier de nouveaux les fichiers scannés? Actuellement la macro rajoute à la suite à chaque relance.

2- Quand je lance la première fois la macro, il me demande le dossier à scanner. Est-il possible de mettre le nom du dossier scanné dans B2 ?
3- Quand je souhaite relancer la relecture du même dossier racine. Est -il possible d'avoir une autre macro (un autre bouton) qui ne demande pas le dossier scanné et qui prend celui qui est dans B2?
4- J'ai remarqué, à l'exécution, la macro recopie toutes les feuilles de chaque fichier. voir test ci-joint. Est-il possible de ne recopier que la première feuille "Feuil1" même si le nom est différent?
5- J'ai plus de 2000 fichiers et 250 répertoires. Pour me faciliter le contrôle des fichiers lus, J'ai rajouté une colonne dans les 2 onglets pour avoir le nom du répertoire du fichier lu. Est-ce possible?
6- Le filtrage n'aime pas des cases vides. pour facilter les filtres, est -il possible de remplir toutes les cases des colonnes "nom du répertoire, "nom du fichier", nom de l'onglet" pour chaque des onglets?

D'avance merci
KIM
 

Pièces jointes

  • RecapGlobal_v31.zip
    37.2 KB · Affichages: 30

Softmama

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Re,

A tester, mais à priori :

1- Les données s'effacent bien à chaque fois que la macro se lance.

2 et 3- La macro demande dans quel répertoire scanner si B2 est vide, sinon il cherche dans le répertoire qui est noté dans B2. Du coup pas besoin de 2 boutons !

4- Voilà, j'ai restreint la copie de la première feuille de chaque fichier trouvé uniquement.

5- J'ai rajouté la colonne avec le nom du répertoire en cours.

6- heu oui, mais j'avais pas vu ça. Vais te corriger ça sous peu...
 
Dernière édition:

KIM

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Re, le fil
@Softmama,
Merci de ta rapidité et disponibilité. Un temps énorme gagné en automatisant la recopie de tous ces fichiers.
Je vais tester ta dernière version et A bientôt
KIM
 

KIM

XLDnaute Accro
Re : import fichiers dans plusieurs dossiers

Re Softmama,
Je vais tout de suite la tester.
Une dernière chose, vue le nombre important de dossiers et de fichiers scannés, est-il possible de mettre en B3 et B4 le nombre de dossiers scannés et le nombre de fichiers recopiés.
Merci encore
KIM
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 472
Messages
2 088 709
Membres
103 928
dernier inscrit
MIKETUAU