bonjour,

je souhaite récupérer le nom d'un fichier, lorsque j'ouvre une boite de dialogue parcourir, grâce au code suivant :

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
mon objectif étant d'automatiser un traitement, voici le contexte:
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 :

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
et ceci c'est pour un fichier ( mon exemple) or, je dois faire cela pour 4 fichiers.

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 :
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
il me met une erreur.

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