Recherche de fichier et l'ouvrir
Bonjour à tous,
Je vous explique le problème, dans une cellule D9 je tape le nom de mon fichier et j'aimerais que quand j'appui sur un bouton, Excel cherche le fichier dans un chemin d'accès spécifique, me l'ouvre et me donne aussi son chemin d'accès dans une cellule C19.
le fichier peut être soit une fichier .xlsm soit un .txt
j'ai cherché sur internet mais je ne comprends pas vraiment les programmes donnés sur les autres forum.
je vous remercie,
Bonjour Snyyzer, bonjour le forum,
Comment vas-tu spécifier le chemin d'accès ? Est-il fixe ou variable. Pourquoi le repporter en C19 s'il est fixe ? C'est pas très clair tout ça...
Bonjour ThauThème,
Excuse moi, alors le chemin d'accès est fixe (il s'agit d'un dossier qui est sur un réseau et qui possède plein de sous dossiers et dans ces sous dossier il y a les fichier qui m'intéresse donc enfaite moi je veux déclarer le chemin principal exemple: \\Gessrv01\public\18. Other Projects\DEE et que lui me donne en retour en plus d'ouvrir le fichier que je demande son chemin exemple: \\Gessrv01\public\18. Other Projects\DEE\DEE-0001-15.
voilà, j'espère que c'est un peu plus compréhensible
merci encore,
Re,
Peut-être comme ça :
Sub Macro1()
Const CH As String = "\\Gessrv01\public\18. Other Projects\DEE" 'déclare la constante CH (CHemin d'accès)
Dim NF As String 'déclare la variable NF (Nom du Fichier)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim GF As Object 'déclare la variable GF(Gestionnaire de Fichiers)
Dim DI As Object 'déclare la variable DI (Dossier Initial)
Dim SD As Object 'déclare la variable SD (Sous Dossiers)
Dim D As Object 'déclare la variable D (Dossier)
Dim F As Object 'déclare la variable F (Fichier)
Set O = Worksheets("Feuil1") 'définit l'onglet O
If O.Range("D9").Value = "" Then Exit Sub 'si la cellule D9 est vide, sort de la procédure
NF = O.Range("D9").Value 'définit le nom du fichier à rechercher NF
O.Range("C19").ClearContents 'efface le contenu de C19
Set GF = CreateObject("Scripting.FileSystemObject") 'définit le gestionnaire de fichiers GF
Set DI = GF.GetFolder(CH) 'définit le dossier initial DI de la recherche
'*************************************************************
'si le fichier recherché n'est jamais dans le dossier initial
'mais dans un sous-dossier de celui-ci, supprimer cette partie
For Each F In DI.Files 'boucle sur tous les fichiers du dossier intial DI
'si le texte en D9 suivi de ".XLSX" ou de ".TXT" correspond au nom du fichier F (convertis en majuscule)
If UCase(F.Name) = UCase(NF) & ".XLSX" Or UCase(F.Name) = UCase(NF) & ".TXT" Then
O.Range("C19").Value = CH & "\" 'renvoie le chemin d'accès dans C19
Workbooks.Open (F) 'ouvre le fichier F
Exit Sub 'sort de la procédure
End If 'fin de la condition
Next F 'prochain fichier de la boucle
'*************************************************************
Set SD = DI.SubFolders 'définit l'ensemble des sous-dossiers SD du dossier initial DI
For Each D In SD 'boucle 1 : sur tous les dossiers D de l'ensemble des sous-dossier SD
For Each F In D.Files 'boucle 2 : sur tous les fichiers du dossier D
'condition : si le texte en D9 suivi de ".xlsx" ou de ".txt" correspond au nom du fichier F (convertis en majuscule)
If UCase(F.Name) = UCase(NF) & ".XLSX" Or UCase(F.Name) = UCase(NF) & ".TXT" Then
O.Range("C19").Value = CH & "\" & D & "\" 'renvoie le chemin d'accès dans C19
Workbooks.Open (F) 'ouvre le fichier F
Exit Sub 'sort de la procédure
End If 'fin de la condition
Next F 'prochain fichier de la boucle 2
Next D 'prochain dossier de la boucle 1
End SubJe te remercie ça fonctionne super bien!