Sub demo() 'creation de la liste des fichiers contenu dans le repertoire qui contient ce même fichier Dim MyWay As String, FichierXl As String, CompteurDeFichier As Integer Dim MessageFinDeTraitement As String, MaFeuille As Worksheet MyWay = ThisWorkbook.Path & "" 'chemin de ce fichier CompteurDeFichier = 0 'initialisation du compteur FichierXl = Dir(MyWay & "*.xls") 'on commence la récupération des fichiers .xls Do While Not FichierXl = "" 'on boucle tant que la variable FichierXl n'est pas vide CompteurDeFichier = CompteurDeFichier + 1 'incrémentation du compteur If CompteurDeFichier = 1 Then ' au premier fichier trouvé On Error Resume Next 'en cas d'erreur sur la prochaine ligne Set MaFeuille = ThisWorkbook.Worksheets("Liste de Fichier") If Not Err 0 Then ' si l'erreur n'est pas à 0 c'est que la feuille n'existe pas 'on crée une nouvelle feuille Set MaFeuille = Worksheets.Add(after:=Worksheets(Worksheets.count)) 'on lui donne son nom MaFeuille.Name = "Liste de Fichier" Else 'si la feuille existe on vide la liste MaFeuille.Columns(1).Cells.ClearContents End If On Error GoTo 0 'annule le precedent on error With MaFeuille.Range("A1") .Columns.ColumnWidth = 100 'valeur de largeur temporaire pour que "Autofit" s'applique correctement 'on donne un titre à la liste .Value "Liste des fichiers du répertoire :" & Chr(10) & MyWay 'Chr(10) retour à la ligne Columns.AutoFit End With End If 'on écrit dans la liste le nom du fichier trouvé MaFeuille.Range("A" & CompteurDeFichier + 1).Value = FichierXl FichierXl = Dir 'on passe au fichier suivant DoEvents 'en cas de problème on pourra toujours sortir de la boucle avec la touche [échap] Loop If CompteurDeFichier = 0 Then ' si pas de fichier MessageFinDeTraitement = "Aucun Fichier trouvé dans le répertoire spécifié ! " Else 'si un fichier ou plus a/on été trouvé(s) MessageFinDeTraitement = CompteurDeFichier & " fichier(s) trouvé(s) " End If ' on affiche un message en fin de traitement MsgBox MessageFinDeTraitement End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub DemoSelectionFichier() Dim LeFichier As String, wb As Workbook With Application.FileDialog(msoFileDialogOpen) .AllowMultiSelect = False .Filters.Add "Fichier Excel", "*.xl*; *.xls; *.xlt; *.xla", 1 If .Show = -1 Then LeFichier = .SelectedItems(1) End If End With If Not LeFichier = "" Then Set wb = Workbooks.Open(LeFichier) Else MsgBox "Operation annulée par l'utilisateur ! ", vbExclamation Exit Sub End If End Sub
Merci pour ta réponse bigfish, mais dans ton code, tu indique le nom du fichier et moi je ne sais pas à l'avance les noms qu'auront les fichiers (il s'agit d'un export d'une appli dans excel qui donne automatiquement un nom de fichier).
Ton code est bien mais tu dois indiquer le nom des fichiers, alors que dans mon cas, ils se génèrent avec un nom aléatoire.
Cependant, pour bien comprendre le cheminement j'ai adapté ton code afin de voir si j'arrive bien à récupérer les fichiers en indiquant le nom.
Mais il me met l'erreur "nom ou numéro de fichier incorrect" sur cette ligne là :
FichierXl = Dir(MyWay & "a.xls")
Alors que le nom du fichier est bien "a" et j'ai été sur "propriété" du fichier pour récupérer le chemin :
MyWay = ThisWorkbook.Path & "C:\Users\C16672\Desktop\Planif" 'chemin de ce fichier
Tu penses que c'est du à quoi ?
Dans ton code tu as créé une seule variable FichierX1, mais si je dois rentrer plusieurs noms de fichiers, il faut que je cré plusieurs variables ? Dans ce cas là pourquoi tu as fait une boucle sur cette variable ?
Je sais que je te pose beaucoup de questions mais je me rends compte à quel point VBA peut aider et j'essaie de comprendre au fur et à mesure comment ça marche...
Merci d'avance de m'accorder de ton temps,
Chloé
FichierXl = Dir(MyWay & "*.xls")