bonjour,
je souhaite récupérer le nom d'un fichier, lorsque j'ouvre une boite de dialogue parcourir, grâce au code suivant :
mon objectif étant d'automatiser un traitement, voici le contexte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 FileToOpen = Application.GetOpenFilename("Fichiers Excel(*.xlsx), *.xlsx", , "Choisir le fichier à ouvrir") If FileToOpen = False Then MsgBox "Operation annulée", vbExclamation Exit Sub Else .... end sub
j'ai un fichier :
- fichiergeneral.xlsx, qui se génère automatiquement via un batch
- donneesmeteo.xls , idem , généré automatiquement
j'aimerais copier la feuille qui se trouve dans donneesmeteo.xlsx vers fichiergeneral.xlsx , je procède donc comme suivant :
et ceci c'est pour un fichier ( mon exemple) or, je dois faire cela pour 4 fichiers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 FileToOpen = Application.GetOpenFilename("Fichiers Excel(*.xlsx), *.xlsx", , "Choisir le fichier à ouvrir") If FileToOpen = False Then MsgBox "Operation annulée", vbExclamation Exit Sub Else Workbooks.Open FileToOpen 'j'ouvre le fichier selectionné, obligé car apparement on est obligé d'ouvrir un fichier pour copier la feuille vers un autre fichier excel Workbooks("donneesmeteo.xlsx").Worksheets("2020").Name = "meteo_2020" ' je renome la feuille de mon fichier que je viens d'ouvrir Workbooks("donneesmeteo.xlsx").Sheets("meteo_2020").Copy After:=Workbooks("fichiergeneral.xlsx").Sheets("feuille24") ' je rajoute une nouvelle feuille vers mon fichiergeneral.xlsx après la dernière feuille de mon classeur ...... ........ ....... endsub
Pour le moment, dans mon code, c'est en dur , je dois donc sélectionner donneesmeteo1.xlsx, puis donneesmeteo2.xlsx, autrefichier3.xlsx.
Le problème c'est que je n'arrive pas à récupérer le nom du fichier, comme ça une fois en prod, c'est une tiers personne qui s'occupera de faire, clic, clic clic , ouf et pouf, son fichiergeneral.xlsx est formaté et elle n'a plus qu'a travaillé dessus lol.
Donc j'avais pensé à ceci :
il me met une erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 FileToOpen = Application.GetOpenFilename("Fichiers Excel(*.xlsx), *.xlsx", , "Choisir le fichier à ouvrir") If FileToOpen = False Then MsgBox "Operation annulée", vbExclamation else Dim nomfichier As String nomfichier = ActiveWorkbook.Name ' il maffiche le nom du fichier 'ici je souhaite faire : Workbooks(nomfichier).Worksheets("Sheet 1").Name = "donneesmeteo_2020" 'je modifie le nom de la feuille Workbooks(nomfichier).Sheets("donneesmeteo_2020").Copy After:=Workbooks("fichiergeneral.xlsx").Sheets("Exercice") Exit Sub
L'idée générale est qu'une tiers personne:
- ouvre le fichiergeneral.xlsx
- appuie sur une macro ayant pour nom "traitement" : ça ouvre une popup, elle selectionne le 1er fichier puis ok ensuite ouf et pouf la feuille du 1er fichier est copié dans le fichiergeneral,
- elle rappuie sur la macro "traitement", choisis le 2eme fichier et ok ( ça copie la feuille du fichier 2 vers le fichier general)
-etc....... jusqu'au fichier 4
et après tadam, le fichier est prêt![]()
Un grand merci pour vos lumières![]()
Partager