XL 2016 Aide pour données de plusieurs fichiers

LudoM28

XLDnaute Nouveau
Bonjour à tous. je possède 4 fichiers excel,(recap, A,B,C)dans les fichiers A,B et C il y a des valeurs dans la colonne B. Dans le fichier recap, je voudrais que les valeurs du fichier A soit automatiquement reporté dans la colonne B du fichier recap, les valeurs du fichiers B dans la colonne C du fichier recap et les valeur du fichier C dans la colonne D du fichier recap.
J’espère avoir été assez clair, merci d'avance
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Ludo, et bienvenu sur XLD,
Un petit fichier test représentatif des données aurait été le bienvenu.
Un essai en PJ avec ces hypothèses :
1- Tous les fichiers sont dans le même dossier
2- La macro traite tous les fichiers excepté le fichier Recap
3- Les données sont toujours dans la feuille 1 des fichiers ABC
4- La page de recap est effacé avant la copie
5- Les fichiers ABC sont de type xlsx
Sinon il faut adapter cette macro :
Code:
Sub CopieFichiers()
    Dim Chemin$, Fichier$, Col%
    Chemin = ThisWorkbook.Path & "\"                                    'Tous les fichiers sont dans le même dossier
    Col = 2                                                             ' La copie commencera en colonne B
    [A1:D1000].ClearContents                                            ' On efface la feuille
    Application.ScreenUpdating = False                                  ' On fige l'écran (plus rapide)
    Fichier = Dir(Chemin & "*.xls*")                                    'Boucle sur tous les fichiers xls du répertoire.
    Do While Len(Fichier) > 0                                           ' T ant qu'il y a des fichiers
        If Left(Fichier, 5) <> "Recap" Then                             ' Sauf fichier Recap qui est le fichier ouvert de synthèse
            Workbooks.Open Chemin & Fichier                             ' On ouvre le fichier
            DL = [A100000].End(xlUp).Row                                ' On recherche la dernière ligne occupée
            T = Sheets(1).Range("A1:A" & DL)                            ' On récupère les données ligne 3
            ActiveWorkbook.Close Savechanges:=False                     ' On ferme le fichier sans l'enregistrer
            Cells(1, Col).Resize(DL, 1).Value = T                       ' On restitue les données
            Col = Col + 1                                               ' Fichier suivant
        End If
        Fichier = Dir()
    Loop
End Sub
 

Pièces jointes

  • Recap.xlsm
    15.7 KB · Affichages: 3

LudoM28

XLDnaute Nouveau
Bonjour Ludo, et bienvenu sur XLD,
Un petit fichier test représentatif des données aurait été le bienvenu.
Un essai en PJ avec ces hypothèses :
1- Tous les fichiers sont dans le même dossier
2- La macro traite tous les fichiers excepté le fichier Recap
3- Les données sont toujours dans la feuille 1 des fichiers ABC
4- La page de recap est effacé avant la copie
5- Les fichiers ABC sont de type xlsx
Sinon il faut adapter cette macro :
Code:
Sub CopieFichiers()
    Dim Chemin$, Fichier$, Col%
    Chemin = ThisWorkbook.Path & "\"                                    'Tous les fichiers sont dans le même dossier
    Col = 2                                                             ' La copie commencera en colonne B
    [A1:D1000].ClearContents                                            ' On efface la feuille
    Application.ScreenUpdating = False                                  ' On fige l'écran (plus rapide)
    Fichier = Dir(Chemin & "*.xls*")                                    'Boucle sur tous les fichiers xls du répertoire.
    Do While Len(Fichier) > 0                                           ' T ant qu'il y a des fichiers
        If Left(Fichier, 5) <> "Recap" Then                             ' Sauf fichier Recap qui est le fichier ouvert de synthèse
            Workbooks.Open Chemin & Fichier                             ' On ouvre le fichier
            DL = [A100000].End(xlUp).Row                                ' On recherche la dernière ligne occupée
            T = Sheets(1).Range("A1:A" & DL)                            ' On récupère les données ligne 3
            ActiveWorkbook.Close Savechanges:=False                     ' On ferme le fichier sans l'enregistrer
            Cells(1, Col).Resize(DL, 1).Value = T                       ' On restitue les données
            Col = Col + 1                                               ' Fichier suivant
        End If
        Fichier = Dir()
    Loop
End Sub
Je te remercie beaucoup pour cette macro, cela semble bien correspondre a ma recherche je regarde pour l'adapter a mon fichier réel, et au besoin je te recontacte. Encore mille merci
 

Discussions similaires

Réponses
7
Affichages
326

Statistiques des forums

Discussions
312 211
Messages
2 086 294
Membres
103 171
dernier inscrit
clemm