Récupérer des données de plusieurs Excel identiques dans un seul
Résolu/Fermé
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
-
Modifié par Vinsanity15 le 24/03/2014 à 16:23
Vinsanity15 Messages postés 39 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 24 avril 2014 - 2 avril 2014 à 16:43
Vinsanity15 Messages postés 39 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 24 avril 2014 - 2 avril 2014 à 16:43
A voir également:
- Récupérer des données de plusieurs Excel identiques dans un seul
- Comment recuperer un message supprimé sur whatsapp - Guide
- Liste déroulante excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
6 réponses
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
24 mars 2014 à 16:39
24 mars 2014 à 16:39
Bonjour,
Tu peux essayer un truc de ce genre-là (en mettant le nom des fichiers en colonne A : https://www.cjoint.com/?DCyqM37tsn6
Sinon, ça devra passer par une macro.
A+
Tu peux essayer un truc de ce genre-là (en mettant le nom des fichiers en colonne A : https://www.cjoint.com/?DCyqM37tsn6
Sinon, ça devra passer par une macro.
A+
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
24 mars 2014 à 17:08
24 mars 2014 à 17:08
Merci Zoul67 pour ta réponse,
le problème c'est qu'avec cette solution le fichier doit être ouvert sinon "#REF!" s'affiche dans la case. Je souhaite juste récupérer les informations.
L'idéal (si possible) serait par l'appui sur un bouton d'une macro de sélectionner un dossier et que tous les informations que je souhaite soit récupérer dans chaque fichier présent dans le dossier sélectionné.
Je ne sais pas si c'est possible et encore merci pour ton aide.
le problème c'est qu'avec cette solution le fichier doit être ouvert sinon "#REF!" s'affiche dans la case. Je souhaite juste récupérer les informations.
L'idéal (si possible) serait par l'appui sur un bouton d'une macro de sélectionner un dossier et que tous les informations que je souhaite soit récupérer dans chaque fichier présent dans le dossier sélectionné.
Je ne sais pas si c'est possible et encore merci pour ton aide.
Zoul67
Messages postés
1959
Date d'inscription
lundi 3 mai 2010
Statut
Membre
Dernière intervention
30 janvier 2023
149
24 mars 2014 à 17:15
24 mars 2014 à 17:15
Par macro ou par formule, le fichier appelé doit être ouvert à un moment.
Si tous tes fichiers semblables sont dans un même dossier, je les ouvrirais tous (sélectionner tous et ouvrir) pour importer dans le classeur récapitulatif. Ensuite tu peux soit annuler le calcul automatique, soit faire un copier coller valeurs.
Pour une macro de ce genre, je n'ai pas trop le temps et je pense que ça a déjà dû être résolu sur le forum.
A+
Si tous tes fichiers semblables sont dans un même dossier, je les ouvrirais tous (sélectionner tous et ouvrir) pour importer dans le classeur récapitulatif. Ensuite tu peux soit annuler le calcul automatique, soit faire un copier coller valeurs.
Pour une macro de ce genre, je n'ai pas trop le temps et je pense que ça a déjà dû être résolu sur le forum.
A+
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
Modifié par eriiic le 24/03/2014 à 18:50
Modifié par eriiic le 24/03/2014 à 18:50
Bonjour,
à tester : https://www.cjoint.com/?DCysWF9VTv5
Mettre le classeur dans le répertoire à traiter, l'ouvrir, cliquer sur le bouton.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
à tester : https://www.cjoint.com/?DCysWF9VTv5
Mettre le classeur dans le répertoire à traiter, l'ouvrir, cliquer sur le bouton.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
25 mars 2014 à 10:03
25 mars 2014 à 10:03
Merci Eriiic pour la réponse,
J'ai un problème d'incompatibilité de type avec mes fichiers. Du coup si je mets votre classeur au même format que les autres fichiers, les macros ne sont plus prisent en compte, je n'arrive donc pas à exécuter le programme.
J'ai un problème d'incompatibilité de type avec mes fichiers. Du coup si je mets votre classeur au même format que les autres fichiers, les macros ne sont plus prisent en compte, je n'arrive donc pas à exécuter le programme.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
Modifié par eriiic le 25/03/2014 à 10:17
Modifié par eriiic le 25/03/2014 à 10:17
Bonjour,
J'ai un problème d'incompatibilité de type avec mes fichiers.
C'est à dire ?
Du coup si je mets votre classeur au même format que les autres fichiers, les macros ne sont plus prisent en compte
Si tu le veux au format excel 2007-2010 pour conserver des formats de cellules particuliers il faut faire 'enregistrer sous...' en choisissant le type *.xlsm
eric
J'ai un problème d'incompatibilité de type avec mes fichiers.
C'est à dire ?
Du coup si je mets votre classeur au même format que les autres fichiers, les macros ne sont plus prisent en compte
Si tu le veux au format excel 2007-2010 pour conserver des formats de cellules particuliers il faut faire 'enregistrer sous...' en choisissant le type *.xlsm
eric
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
25 mars 2014 à 10:45
25 mars 2014 à 10:45
Oui, en faisant plusieurs tests j'avais déjà fait cela. Mais le classeur en .xlsm ne prenait en compte qu'un seul fichier en format .xls (j'ai fais un essai pour voir si cela fonctionnait avec ce type de fichier).
Donc le problème est que j'ai 8 fichiers par répertoire et j'ai une cinquantaine de répertoire. Et la j'ai réussi à récupérer les données que d'un classeur et en plus le seul que j'ai mis en .xls alors que je les veux en .xlsx
Je continue de chercher et encore merci pour l'aide Eric
Donc le problème est que j'ai 8 fichiers par répertoire et j'ai une cinquantaine de répertoire. Et la j'ai réussi à récupérer les données que d'un classeur et en plus le seul que j'ai mis en .xls alors que je les veux en .xlsx
Je continue de chercher et encore merci pour l'aide Eric
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
25 mars 2014 à 10:51
25 mars 2014 à 10:51
En fait je n'arrive plus à récupérer aucune donnée maintenant
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
25 mars 2014 à 11:41
25 mars 2014 à 11:41
Aucune raison que ça ne fonctionne pas avec des xlsx.
Ne touche pas au code si tu ne sais pas trop ce que tu fais.
et j'ai une cinquantaine de répertoire
Inutile de copier le fichier 50 fois, j'ai ajouté une sélection du répertoire.
J'ai aussi changé le collé pour y mettre valeurs et format à la place d'une éventuelle formule.
Je nettoie la feuille avant chaque répertoire. Si tu préfères te charger toi même du nettoyage et pouvoir cumuler la synthèse de plusieurs répertoires sur une même feuille, précise-le.
En xlsm : https://www.cjoint.com/c/DCzlN6I3Wpj
eric
Ne touche pas au code si tu ne sais pas trop ce que tu fais.
et j'ai une cinquantaine de répertoire
Inutile de copier le fichier 50 fois, j'ai ajouté une sélection du répertoire.
J'ai aussi changé le collé pour y mettre valeurs et format à la place d'une éventuelle formule.
Je nettoie la feuille avant chaque répertoire. Si tu préfères te charger toi même du nettoyage et pouvoir cumuler la synthèse de plusieurs répertoires sur une même feuille, précise-le.
En xlsm : https://www.cjoint.com/c/DCzlN6I3Wpj
eric
Merci Eric pour ton aide,
Après quelques modifications de code, on arrive à récupérer les données de plusieurs classeurs présents dans un même dossier.
Voici le code
Sub synthèse()
'lignes 9 à 40 des colonnes A, B, C et E.
'fichier 1 dans les lignes 2 à 33 ; Fichier 2 dans les lignes 34 à 65 etc... Dim chemin As String, Fichier As String
Dim wb As Workbook, wb2 As Workbook, sh As Worksheet, sh2 As Worksheet
Dim chemin As String, Fichier As String, nbFich As Long
Dim derlig As Long
Set wb = ThisWorkbook
Set sh = Worksheets(1)
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then
chemin = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
Application.ScreenUpdating = False
derlig = Cells.Find("*", , , , xlByRows, xlPrevious).Row
If derlig > 1 Then Range("A2:A" & derlig).EntireRow.Delete
Fichier = Dir(chemin & "*.xl*") ' 1er fichier
Do While (Len(Fichier) > 0)
If Fichier <> wb.Name Then
Workbooks.Open chemin & Fichier
' traitement
Set wb2 = ActiveWorkbook
' Set sh2 = ActiveSheet
Set sh2 = Worksheets(1)
wb.Activate
sh2.[A9:C40].Copy
sh.Cells(nbFich * 32 + 2, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues
'Selection.PasteSpecial Paste:=xlPasteFormats
sh2.[E9:E40].Copy
sh.Cells(nbFich * 32 + 2, 5).Select
Selection.PasteSpecial Paste:=xlPasteValues
'Selection.PasteSpecial Paste:=xlPasteFormats
sh.Cells(nbFich * 32 + 2, 1) = Fichier
nbFich = nbFich + 1
wb2.Close
End If
Fichier = Dir() ' fichier suivant
Loop
[A1].Select
End Sub
Mais maintenant on aimerait récupérer les données de tous les dossiers présents dans un répertoire en une seule fois.
Comment dois je faire ? ajouter une boucle ?
Après quelques modifications de code, on arrive à récupérer les données de plusieurs classeurs présents dans un même dossier.
Voici le code
Sub synthèse()
'lignes 9 à 40 des colonnes A, B, C et E.
'fichier 1 dans les lignes 2 à 33 ; Fichier 2 dans les lignes 34 à 65 etc... Dim chemin As String, Fichier As String
Dim wb As Workbook, wb2 As Workbook, sh As Worksheet, sh2 As Worksheet
Dim chemin As String, Fichier As String, nbFich As Long
Dim derlig As Long
Set wb = ThisWorkbook
Set sh = Worksheets(1)
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then
chemin = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
Application.ScreenUpdating = False
derlig = Cells.Find("*", , , , xlByRows, xlPrevious).Row
If derlig > 1 Then Range("A2:A" & derlig).EntireRow.Delete
Fichier = Dir(chemin & "*.xl*") ' 1er fichier
Do While (Len(Fichier) > 0)
If Fichier <> wb.Name Then
Workbooks.Open chemin & Fichier
' traitement
Set wb2 = ActiveWorkbook
' Set sh2 = ActiveSheet
Set sh2 = Worksheets(1)
wb.Activate
sh2.[A9:C40].Copy
sh.Cells(nbFich * 32 + 2, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues
'Selection.PasteSpecial Paste:=xlPasteFormats
sh2.[E9:E40].Copy
sh.Cells(nbFich * 32 + 2, 5).Select
Selection.PasteSpecial Paste:=xlPasteValues
'Selection.PasteSpecial Paste:=xlPasteFormats
sh.Cells(nbFich * 32 + 2, 1) = Fichier
nbFich = nbFich + 1
wb2.Close
End If
Fichier = Dir() ' fichier suivant
Loop
[A1].Select
End Sub
Mais maintenant on aimerait récupérer les données de tous les dossiers présents dans un répertoire en une seule fois.
Comment dois je faire ? ajouter une boucle ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
26 mars 2014 à 15:29
26 mars 2014 à 15:29
Bonjour,
Pour ça je te conseille l'excellent site de J Boigontier.
Sur cette page tu trouveras 'Arborescence des sous-répertoires d'un répertoire'
eric
Pour ça je te conseille l'excellent site de J Boigontier.
Sur cette page tu trouveras 'Arborescence des sous-répertoires d'un répertoire'
eric
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
27 mars 2014 à 10:01
27 mars 2014 à 10:01
Si par rapport au code que j'ai laissé je dois maintenant récupérer les 3 premières colonnes uniquement sur le premier fichier et l'a colonne E sur tous, que dois-faire ?
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
27 mars 2014 à 10:29
27 mars 2014 à 10:29
Bonjour,
rajouter un test.
Si tu permets je vais partir du fichier que j'avais déposé plutôt que du truc illisible que tu as collé.
eric
rajouter un test.
Si tu permets je vais partir du fichier que j'avais déposé plutôt que du truc illisible que tu as collé.
If nbFich = 0 Then 'ligne à ajouter sh2.[A9:C40].Copy sh.Cells(nbFich * 32 + 2, 2).Select Selection.PasteSpecial Paste:=xlPasteValues 'Selection.PasteSpecial Paste:=xlPasteFormats End If 'ligne à ajouter
eric
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
27 mars 2014 à 10:38
27 mars 2014 à 10:38
Ah super déjà un problème de moins merci beaucoup. Et si les lignes récupérées individuellement je décide de les mettre cote à cote plutôt que l'une en dessous de l'autre ?
Et merci beaucoup de prendre du temps pour m'aider c'est très gentil
Et merci beaucoup de prendre du temps pour m'aider c'est très gentil
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
27 mars 2014 à 11:07
27 mars 2014 à 11:07
Là ça oblige à reprendre la structure.
1) Si tu mets tous les répertoires dans un même classeur difficile de faire figurer les noms de fichiers. A moins d'afficher sur 2 lignes, ou de le mettre en commentaire de cellule.
Inutile, ou bien quel est ton choix ?
2) sur 2003 on est limités à 256 colonnes. Ca sera toujours 50 répertoires ? Sinon sur quelles versions c'est sensé tourner et quoi faire si on atteint la limite 2003 ?
Tu ferais mieux de déposer ton fichier avec les dernières modif si tu veux limiter les adaptations.
eric
1) Si tu mets tous les répertoires dans un même classeur difficile de faire figurer les noms de fichiers. A moins d'afficher sur 2 lignes, ou de le mettre en commentaire de cellule.
Inutile, ou bien quel est ton choix ?
2) sur 2003 on est limités à 256 colonnes. Ca sera toujours 50 répertoires ? Sinon sur quelles versions c'est sensé tourner et quoi faire si on atteint la limite 2003 ?
Tu ferais mieux de déposer ton fichier avec les dernières modif si tu veux limiter les adaptations.
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
Modifié par eriiic le 27/03/2014 à 19:26
Modifié par eriiic le 27/03/2014 à 19:26
Dans VBE regarde dans 'Outils / Références...' si tu peux activer Microsoft Scripting Runtime.
Il le faut pour utiliser le FileSystemObject (fso) et toutes les versions d'excel ne l'ont pas.
Sinon ici : lister les répertoires avec Dir() (sans fso donc)
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Il le faut pour utiliser le FileSystemObject (fso) et toutes les versions d'excel ne l'ont pas.
Sinon ici : lister les répertoires avec Dir() (sans fso donc)
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(devise Shadok)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
28 mars 2014 à 09:04
28 mars 2014 à 09:04
Fait!
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
28 mars 2014 à 10:26
28 mars 2014 à 10:26
ok, n'oublie pas de mettre en résolu alors stp
eric
eric
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
28 mars 2014 à 10:30
28 mars 2014 à 10:30
Pas résolu encore je parlais de cocher la case
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 247
28 mars 2014 à 10:34
28 mars 2014 à 10:34
ok, si tu n'y arrives pas et que tu veux un coup de main pense à poster la dernière version.
eric
eric
Vinsanity15
Messages postés
39
Date d'inscription
lundi 24 mars 2014
Statut
Membre
Dernière intervention
24 avril 2014
28 mars 2014 à 13:52
28 mars 2014 à 13:52
Oui besoin d'aide.
https://www.cjoint.com/?3CCnVmwS5n2 Voici le programme qui fonctionne sans l'ouverture des sous dossiers
Et la voici une des voies vers laquelle nous nous dirigeons sans savoir si elle fonctionne ou non
https://www.cjoint.com/?3CCnYYpTb1d
Donc on arrive a récupérer les informations des 50 sous dossiers 1 par 1 mais ce qu'on veut c'est sélectionner le dossier qui contient ces 50 sous dossiers et tout récup d'un coup
https://www.cjoint.com/?3CCnVmwS5n2 Voici le programme qui fonctionne sans l'ouverture des sous dossiers
Et la voici une des voies vers laquelle nous nous dirigeons sans savoir si elle fonctionne ou non
https://www.cjoint.com/?3CCnYYpTb1d
Donc on arrive a récupérer les informations des 50 sous dossiers 1 par 1 mais ce qu'on veut c'est sélectionner le dossier qui contient ces 50 sous dossiers et tout récup d'un coup