Ouvrir et fermer classeur avec nom changeant

Bonjour !

Alors voilà la situation ! Chaque jour je dois extraire d'un ERP 100 fichiers csv dont les dénominations ont toujours la même base mais un suffixe différent à chaque extract.

ex :

Fichier 1 : A001-67831286

Fichier 2 : B002-65265216

Fichier 3 : C003-09120838

...

J'ai un fichier master dans lequel je viens copier coller les data de chaque fichier pour compiler. (pour info je copie colle sur 100 feuilles différentes (une par extract) et une feuille master vient cherche chercher les données de chaque feuille, afin de compiler.)

Donc,

Je souhaiterais automatiser cette extraction mais le fait que le suffixe change me fais bugguer ma macro. Sauriez-vous m'aider sur ce sujet svp ?

Pas besoin de simuler 100 fichiers, je démultiplierais et adapterais le code en conséquence de mon côté, j'ai juste besoin de l'exemple basique pour réussir à le faire sur un fichier/extract ! :)

Bien cordialement,

bonjour,

une proposition à adapter

Sub aargh()
    chemin = "d:\mescsv\"
    nompartiel = "A001-"
    nomfichier = Dir(chemin & nompartiel & "*")
    If nomfichier <> "" Then
        'ouvrir et traiter ton fichier chemin &nomfichier
    Else
        MsgBox "fichier " & chemin & nompartiel & " non trouvé"
    End If
End Sub

nomfichier contiendra le nom du premier fichier qui correspond au nom partiel.

Hello,

merci pour ton début de réponse déjà !

J'ai vraiment que les bases sur VBA donc est ce que ça te dérangerais de faire le code pour 2 exemples et, pour l'exemple, de simplement copier la cellule A1 de l'extract 1 sur la feuil1 (classeur master) et la cellule A1 de l'extract 2 sur la feuil2 (classeur master) ? Parce qu'avec ton code je ne sais pas ce que je dois doubler ou non. Et puis je n'arrive pas à ouvrir les extracts...

Merci pour le temps accordé !

rebonjour,

voici une façon de faire. Mais cela peut certainement être optimisé en fonction de ce que tu veux faire (ne pas ajouter un onglet par fichier, powerquery, ...)

Option Explicit
Sub aargh()
Dim wbm As Workbook, wb As Workbook, ws As Worksheet
Dim chemin As String, nomfichier As String, nompartiel As String
Dim listedesnomspartiels
Dim i As Long

    Set wbm = ThisWorkbook 'wbm =classeur master
    chemin = "d:\downloads\" 'répertoire contenant les fichiers CSV
    listedesnomspartiels = Split("A001,B002,C003", ",") ' liste des noms partiels des fichiers à ouvrir

    For i = LBound(listedesnomspartiels) To UBound(listedesnomspartiels) 'on parcourt la liste des fichiers csv à ouvrir
        nompartiel = listedesnomspartiels(i) 'on prend l'élément i de la listedesnomspartiels

        'on supprime l'onglet du nom nompartiel, s'il est présent dans le classeur master
        On Error Resume Next 'passer à l'instruction suivante si on rencontre une erreur (ici l'erreur possible est que l'onglet n'existe pas,ce qui va générer une erreur si essaie de le supprimer)
        Application.DisplayAlerts = False 'on désactive les messages de confirmation
        wbm.Sheets(nompartiel).Delete ' suppression de l'onglet
        Application.DisplayAlerts = True 'on réactive les messages de confirmation
        On Error GoTo 0 'on réenclenche la gestion standard des erreurs par VBA

        nomfichier = Dir(chemin & nompartiel & "*") 'on recherche le premier fichier dont le nom correspond au nom partiel

        If nomfichier <> "" Then 'si un fichier existe
            Set ws = wbm.Sheets.Add 'on ajoute un onglet au classeur master
            ws.Name = nompartiel 'on lui donne nompartiel comme nom
            Set wb = Workbooks.Open(chemin & nomfichier) 'on ouvre le fichier csv
            ws.Range("A1") = wb.Sheets(1).Range("A1") 'on copie la cellule A1
            wb.Close 'on ferme le fichier csv
        Else 'si fichier n'existe pas
            MsgBox "fichier " & chemin & nompartiel & " non trouvé"
        End If

    Next i 'on passe au nom partiel suivant de la liste
End Sub

Merci beaucoup pour le temps accordé, je vais essayer ça la prochaine fois et également m'intéresser à powerquery pour voir si c'est pas plus adapté à ma demande ! :)

Rechercher des sujets similaires à "ouvrir fermer classeur nom changeant"