Ouvrir UN par UN tous les fichiers d'un répertoire en VBA

Salut !

Je suis tout nouveau sur le forum et je voudrais savoir comment pouvons nous ouvrir un par un tous les fichiers d'un répertoire :

je m'explique, je suis en stage L1 et je dois automatiser un fichier excel qui :

  • on doit ouvrir un fichier manuellement.
  • on ouvre un fichier (du repertoire en question)
  • on retourne sur le premier fichier et on actionne une macro qui prendra des données de l'autre fichier (du répertoire en question)
  • on ferme le fichier (du répertoire en question) et on ouvre le prochain pour faire la même chose un à un.

Je dois donc automatiser ça mais je suis pas vraiment expert en excel.

Je voudrais donc :

ouvrir le fichier mère manuellement puis en lançant la macro, qu'il puisse ouvrir chaque fichier du répertoire un à un tout en exécutant l'autre macro entre chaque ouverture de fichiers.

est ce possible ?

merci !

Léo.

Bonjour Léo, bonjour le forum,

Oui c'est possible mais il faut savoir :

• si les fichiers sources se trouvent dans le même dossier que le fichier mère ? oui/non ?

• si non, quel est le chemin d'accès aux fichiers source ?

• quel est le nom de l'onglet des fichiers sources où seront copiées les données ?

• quel est le nom de l'onglet du fichier mère ou seront collées les données copiées ?

• quel est la plage a copier dans le fichier source ?

Dans l'attente de tes réponses pour te proposer un code...

Bonjour ThauThème, merci d'avoir pris le temps de me répondre.

Pour ce qui est de tes questions :

  • Non les fichiers sources se trouvent pas dans la même répertoire qui le fichier mère.
  • Le chemin d’accès que j'ai n'est pas le bon car je l'ai sur mon PC actuellement mais l'entreprise ne l'aura pas via le même chemin, je le fais juste sur mon PC pour ensuite leur dire de modifier le chemin, pour ce qui est de mon PC : le fichier mère se trouve directement sur le bureau "C:\Utilisateurs\A671030\Desktop" et pour les fichiers sources, ils sont dans un fichier sur le bureau "C:\Utilisateurs\A671030\Desktop\Fichiers Pampa"

-Pour le reste, je n'ai pas réellement compris ce que tu attends (excuse moi ) mais tout ce qui est remplissage & écriture c'est déjà une autre macro qui le gère.

Moi tout ce que je dois automatiser c'est le fait que quand le fichier mère est ouvert et qu'on exécute la macro (que je veux réaliser) il ouvre un fichier source, actionne l'autre macro (la macro qui s'occupe de l’écriture) , refermer le fichier source, ouvrir le 2eme fichier source ... etc pour tous les fichiers du répertoire.

Si tu as d'autres questions au cas où je me suis mal exprimé, hésite pas et merci de ton aide !

Cordialement

Bonjour Léo, bonjour le forum,

Cette macro est à placer dans ton fichier mère (que j'appelle Destination dans le code, contrairement aux autres qui sont les fichiers Source) !

Comme le chemin d'accès n'est pas vraiment défini j'ai commencé le code par la recherche du dossier. Tu pourras remplacer cette partie en écrivant le chemin d'accès en dur...

J'ai aussi écris la partie du copier coller car une fois que le classeur est ouvert un copier/coller simple s'écrit en deux lignes. Il te faut juste adapter le nom ou index de l'onglet source et de l'onglet destination. Mais là aussi, tu pourras supprimer cette partie et la remplacer par ton code à toi.

Le code :

Sub Macro1()
Dim BDD As FileDialog 'déclare la variable BDD (Boîte de Dialogue Dossier)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim FS As String 'décalre la variable FS (Fichier Source)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim DEST As Range 'déclare la variable DEST (celllue de DESTination)

'Si tu connais le chemin d'accès et qu'il ne bougera pas écris-le en-dessous et supprime la partie indiquée si...
'ici --> CA = "ton_Chemin" & "\"

'lignes à supprimer si...
'définit la boîte de dialogue BDD (permetant de définit le dossier des fichiers source)
Set BDD = Application.FileDialog(msoFileDialogFolderPicker)
With BDD 'prend en compte BDD
    .AllowMultiSelect = False 'n'autorise qu'une seule sélection
    .Show 'affiche BDD
    If .SelectedItems.Count = 0 Then Exit Sub 'si bouton [Annuler], sort de la procédure
    CA = .SelectedItems(1) & "\" 'définit la chemin d'accès CA aux fichiers à ouvrir
End With 'fin de la prise en compte de BDD
'fin des lignes à supprimer si...

Set CD = ThisWorkbook 'définit la classeur destination CD
Set OD = CD.Sheets(1) 'définit l'onglet destination OD (à adapter à ton cas, ici j'ai mis le premier onglet)
FS = Dir(CA & "*.xlsx") 'définit le premier fichier source Excel contenu dans le dossier ayant CA comme chemin d'accès
Do While FS <> "" ' exécute tant qu'il existe des fichiers source
    Workbooks.Open CA & FS 'ouvre le fichier source FS
    Set CS = ActiveWorkbook 'définit la classeur source CS
    Set OS = CS.Worksheets(1) 'définit l'onglet source OS (à adapter à ton cas, ici j'ai j'ai mis le premier onglet)

    '*******************************************************************************************
    ' cette partie correspond à ta macro du copier/coler. Adapte là à ton cas

    'définit la cellule de destination DEST (première cellule vide de la colonne A)
    Set DEST = OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0)
    OS.Range("A1:H50").Copy DEST 'copie la plage A1:H50 de l'onglet source et la colle dans DEST

    'sinon, tu supprimes cette partie et tu lances ta propre macro
    '*******************************************************************************************

    'call MaMacro

    CS.Close False 'ferme le claseru source CS (sans enregistrer)
    FS = Dir 'définit le prochain fichier source excel du dossier ayant CA comme chemin d'accès
Loop 'boucle
End Sub

bonjour à tous

comme souvent, on veut faire comme avec des classeurs de papier : j'ouvre le 1 et je recopie au stylo, j'ouvre le 2 et je recopie au stylo...

avec Excel, c'est tout fait !

rien à programmer, pas de VBA

de simples signes =

entre feuilles

(on nomme ceci des liaisons)

rien à ouvrir ! rien à copier

toutes les données sont à jour en permanence

Hello !

Désolé pour l'absence de réponse, j'étais en week end me voilà de retour

Merci énormément pour votre aide , j'ai réussi grâce à votre macro, c'est super cool !

et pour répondre à jmd, j'ai pas réellement compris la manœuvre à faire pour le faire sans macro si tu pouvais m'éclaircir , c'est toujours bon d'en savoir plus aha

Une bonne journée à vous tous.

Léo.

Bonjour j'ai utulisé votre code mais il renvoie un message d'erreur et je sais pas pourquoi

en PJ capture d'ecran du message d'erreur

vous pouvez m'aider

capture
Rechercher des sujets similaires à "ouvrir tous fichiers repertoire vba"