Récupérer des données de 100 fichiers Excel
Bonjour à tous,
J'ai fait une collecte de données sur 100 entreprises, en remplissant plusieurs onglets. 2 d'entre eux doivent être récupérés pour compléter une autre collecte de données.
J'aimerais donc trouver un moyen de récupérer les données des deux onglets * les 100 fichiers, dans un seul fichier excel. Cela pourrait être une simple copie d'onglet, ou bien un vrai export de données sous une forme définie. Car chacune des données collectées est reliée avec un critère dont la nomenclature est unique, et la place est identique dans chacun des onglets/fichiers. Ca pourrait donc faciliter les choses (je suppose)
Alors est-il possible de créer des chemins de documents conditionnels à des cellules, pour que j'ai juste à copier le nom des fichiers et que tout se cherche seul ?
Ou existe-t-il une autre solution?
Je vous joins un fichier excel qui continue les données de l'entreprise A et un fichier qui pourrait accueillir l'ensemble des résultats.
Merci pour votre aide !!
Bonjour
16.16 c'est une ancienne version ?
Si oui VBA
Avec 365 c'est faisable assez fcailement par PowerQuery (sur PC PowerQuery est intégré depuis la version 2016 mais pas sur MAC)
Bonjour,
Donc en VBA tu peux avoir un truc comme ça :
Avant d'utiliser le bouton "Test" il faudra indiquer le dossier dans lequel il y a les reponses des entreprises.
A l'intérieur du "module 1" changer le "DosCollecte"
Sub MAJ_Collecte()
DosCollecte = "C:\TEMP_GED\DosCollecte"
'Vérifie l'existence du dossier
If Right(DosCollecte, 1) <> "\" Then DosCollecte = DosCollecte & "\"
If Dir(DosCollecte, vbDirectory) = vbNullString Then
MsgBox (DosCollecte & Chr(10) & "Dossier non trouvé")
Exit Sub
End If
Application.ScreenUpdating = False
Set F_Collecte = ThisWorkbook.Worksheets(1)
'Lister les enterprises
FichierCollecte = Dir(DosCollecte)
Do While FichierCollecte <> ""
If Right(FichierCollecte, 5) = ".xlsx" Then
EmpFichier = DosCollecte & FichierCollecte
Workbooks.Open Filename:=EmpFichier
Set FichierEntreprise = ActiveWorkbook
DerLig = F_Collecte.Cells(Rows.Count, 3).End(xlUp).Row + 1
F_Collecte.Cells(DerLig, 1) = FichierEntreprise.Worksheets(1).Range("B2") 'secteur
F_Collecte.Cells(DerLig, 2) = FichierEntreprise.Worksheets(1).Range("C2") 'indice
F_Collecte.Cells(DerLig, 3) = FichierEntreprise.Worksheets(1).Range("A2") 'societe
F_Collecte.Cells(DerLig, 4) = FichierEntreprise.Worksheets(1).Range("D2") 'isin
F_Collecte.Cells(DerLig, 5) = FichierEntreprise.Worksheets(3).Range("D3") 'CE_A_001
F_Collecte.Cells(DerLig, 6) = FichierEntreprise.Worksheets(3).Range("D4") 'CE_A_001_a
F_Collecte.Cells(DerLig, 7) = FichierEntreprise.Worksheets(3).Range("D5") 'CE_A_001_b
F_Collecte.Cells(DerLig, 8) = FichierEntreprise.Worksheets(3).Range("D6") 'CE_A_002
F_Collecte.Cells(DerLig, 9) = FichierEntreprise.Worksheets(3).Range("D7") 'CE_A_002_a
F_Collecte.Cells(DerLig, 10) = FichierEntreprise.Worksheets(3).Range("D8") 'CE_A_002_b
F_Collecte.Cells(DerLig, 11) = FichierEntreprise.Worksheets(3).Range("D9") 'CE_A_003
F_Collecte.Cells(DerLig, 12) = FichierEntreprise.Worksheets(3).Range("D10") 'CE_A_005
F_Collecte.Cells(DerLig, 13) = FichierEntreprise.Worksheets(3).Range("D11") 'CE_A_006
F_Collecte.Cells(DerLig, 14) = FichierEntreprise.Worksheets(3).Range("D12") 'CE_A_009
F_Collecte.Cells(DerLig, 15) = FichierEntreprise.Worksheets(2).Range("D3") 'S_A_001
F_Collecte.Cells(DerLig, 16) = FichierEntreprise.Worksheets(2).Range("D4") 'S_A_001_a
F_Collecte.Cells(DerLig, 17) = FichierEntreprise.Worksheets(2).Range("D5") 'S_A_001_b
F_Collecte.Cells(DerLig, 18) = FichierEntreprise.Worksheets(2).Range("D6") 'S_A_002
F_Collecte.Cells(DerLig, 19) = FichierEntreprise.Worksheets(2).Range("D7") 'S_A_002_a
F_Collecte.Cells(DerLig, 20) = FichierEntreprise.Worksheets(2).Range("D8") 'S_A_002_b
F_Collecte.Cells(DerLig, 21) = FichierEntreprise.Worksheets(2).Range("D9") 'S_A_003
F_Collecte.Cells(DerLig, 22) = FichierEntreprise.Worksheets(2).Range("D10") 'S_A_005
F_Collecte.Cells(DerLig, 23) = FichierEntreprise.Worksheets(2).Range("D11") 'S_A_006
F_Collecte.Cells(DerLig, 24) = FichierEntreprise.Worksheets(2).Range("D12") 'S_A_009
ActiveWorkbook.Close SaveChanges:=False
End If
FichierCollecte = Dir
Loop
MsgBox "Collecte OK"
End SubA+
Bonjour Mariesg,
C'est le bouton que j'ai ajouté pour la macro qui bloque.
Copie juste le code de mon precedent message et colle le sur ton fichier, toujours en changeant le chemin :
DosCollecte = "C:\TEMP_GED\DosCollecte"et peut etre aussi les "\" en "/" sur la ligne juste apres : (car mac)
If Right(DosCollecte, 1) <> "\" Then DosCollecte = DosCollecte & "\"Et comme dans le fichier joint, indique en C2 Société car c'est a la suite d'un nom de société que j'inscrit les autres fichiers (pour commencer en ligne 3 avec "DerLig")
Bonjour à tous
Dans l'onglet Tech modifier le chemin puis actualiser le résultat de l'onglet Collecte N
Cela suppose que les 3 onglets soient dans le même ordre dans tous les classeurs (j'avais dupliqué ton exemple en changeant juste 2 valeurs)
Vérifie ta version car il me semble que 16.16 n'est pas celle que tu as... et précise plutôt 365 dans ton profil

