Compilation de plusieurs classeurs avec 1 feuil dans un classeur

Fermé
bf78630 Messages postés 1 Date d'inscription mercredi 26 avril 2017 Statut Membre Dernière intervention 27 avril 2017 - Modifié le 27 avril 2017 à 09:35
 Bf78630 - 28 avril 2017 à 07:47
Bonjour,

Je suis entrain d'essayer de compiler plusieurs classeurs situés dans le même dossier source, pour ramener toutes mes données sur un seul et même onglet d'un fichier de compilation.

Cependant lorsque j’exécute mon code j'obtiens l'erreur suivante : Erreur d'éxécution 1004 , erreur définie par l'application ou par l'objet

J'ai seulement le premier fichier du dossier ou se situe les fichiers à compiler qui s'ouvre


Sub recup()
Range("A1").Select 'sélectionner la cellule de début
Chemin = "C:\Users\ablancfo\Desktop\Fichier en cours\VBA OFS\TEST\A compiler\" 'saisir le chemin complet du dossier où se trouvent les fichiers
Fichier = Dir(Chemin & "*.xls") ' Premier fichier
Do While Fichier <> ""
Workbooks.Open Filename:=Chemin & Fichier
Range("export").Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Windows(Fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Fichier = Dir ' Fichier suivant
Loop
End Sub


Merci beaucoup pour votre aide !

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
27 avril 2017 à 11:34
Bonjour BF, bonjour le forum,

Essaie comme ça (nom des onglets à adapter) :

Sub recup()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim F As String 'déclare la variable F (Fichiers)
Dim DEST As Range 'déclare la variable DEST (DESTination)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Feuil1") 'définit l'onglet destination OD (à adapter à ton cas)
CA = "C:\Users\ablancfo\Desktop\Fichier en cours\VBA OFS\TEST\A compiler\" 'définit le chemin d'accès CA
F = Dir(CA & "*.xls") ' Premier fichier
Do While F <> "" 'exécute tant qu'il existe des fichiers
    'définit la cellule de destinatin DEST (A1, si A1 est vide, sinon, ;la premiere cellule vide de la colonne A de l'onglet OD
    Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
    Workbooks.Open F 'ouvre le fichier F
    Set CS = ActiveWorkbook 'définit le classeur source CS
    Set OS = CS.Worksheets("Feuil1") 'définit l'onglet source OS (à adapter à ton cas)
    OS.Range("export").Copy DEST 'copie la plage nommée export de l'onglet OS et la colle dans dest
    CS.Close savechanges:=False 'ferme le classeur source sans enregistrer les changements
    F = Dir ' Fichier suivant
Loop 'boucle
End Sub


Si les fichiers source se trouvent dans la même dossier que le fichier destination tu peux simplifier CA avec :
CA = CD.Path & "\"

Mais tu dois faire attention que le fichier destination ne soit pas inclus dans la boucle...
1
Hello TauTheme mille merci pour ta réponse je suis plutot debutant en VBA mais j'adore ça ! De plus un code completement commenté comme le tiens c'est du pain bénit pour moi ! :) je vais l'essayer également, car j'ai trouvé une autre solution qui consiste tout simplement à coller mon code dans un module VBA (et ça fonctionne!) alors qu'avant je le mettais juste dans la feuille VBA. Cpendant je ne suis pas sur de bien comprendre la différence entre ces deux endroits ou placer le code.

Toujours est il que ça n'est que le début de ce que je compte faire : l'exercice ici est de compiler plusieurs fichiers (environ 75 bons de commande) et de rajouter des informations en colonne sur la droite par rapport au nom du fichier (correspondant au nom du client ) à chaque copier coller. J'esperais pouvoir le faire en ajoutant des condition imbriquées. Est ce que cela te parait etre la bonne direction ? J'ai nomé mes fichiers "test1", "test2" ect si jamais tu as le temps d'éclairer ma lanterne, c'est avec plaisir que je te lirais !
En tout cas , MILLE MERCI !
0