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 !!

7collecte.xlsx (9.61 Ko)

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 :

10collecte-geof.xlsm (23.89 Ko)

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"

image
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 Sub

A+

Bonjour 78Chris,

Merci pour ta réponse :-)

J'ai Power Query sur Mac. Comment puis-je facilement extraire deux onglets de 100 fichiers d'un même dossier?

Voici les sources auxquelles je peux faire appel :

capture d e cran 2023 07 20 a 11 23 42

Bonjour Geof52,

Malheureusement dès que j'ouvre le fichier, une alerte apparait ... Aurais-tu une solution à me proposer ?

Merci :-)

image

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")

image

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)

9collecte2-pq.xlsx (27.29 Ko)

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

Rechercher des sujets similaires à "recuperer donnees 100 fichiers"