Bonjour à tous,
Voici un petit code sympathique pour sélectionner un fichier et mettre le chemin d'accès dans une cellule.
Et ici, le lien vers le fichier
Avant d'ajouter le code, il faut nommer la cellule stockant le nom du fichier.
Ca ressemble à ceci :
Sub choix_fichiers()
'cette macro permet de reprendre le nom du fichier et de le mettre dans la plage nommée
Dim fichier As String
With Application.FileDialog(msoFileDialogFilePicker)
.Show
On Error Resume Next
fichier = .SelectedItems.Item(1)
On Error GoTo 0
End With
If fichier <> "" Then Range("Nom_du_fichier").Value = fichier
End Sub
J'utilise ce petit code pour importer des fichiers pour traitement, comparaison, etc.
A bientôt.
Gaetan
super ca marche tres bien sur excell mais pas sur vision
visio ne connait pas .filedialog
est ce que tu sais ce que je dois activé?
Merci de ton aide
Bonjour,
Je n'utilise pas Visio, mais peut être ceci :
http://visguy.com/vgforum/index.php?topic=738.0
'// Module: OpenExcelFile
'//
'// This is code that uses the Windows API to invoke the Open File
'// common dialog. It is used by users to choose an Excel file that
'// contains organizational data.
Private Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (OFN As OPENFILENAME) As Boolean
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As LongPtr
hInstance As LongPtr
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As LongPtr
lpTemplateName As String
End Type
Public Sub FindExcelFile(ByRef filePath As String, _
ByRef cancelled As Boolean)
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
' On Error GoTo errTrap
OpenFile.lStructSize = LenB(OpenFile)
'// Sample filter:
'// "Text Files (*.txt)" & Chr$(0) & "*.sky" & Chr$(0) & "All Files (*.*)" & Chr$(0) & "*.*"
sFilter = "Excel Files (*.xl*)" & Chr(0) & "*.xl*"
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = ThisDocument.Path
OpenFile.lpstrTitle = "Find Excel Data Source"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
cancelled = True
filePath = vbNullString
Else
cancelled = False
filePath = Trim(OpenFile.lpstrFile)
filePath = Replace(filePath, Chr(0), vbNullString)
End If
Exit Sub
errTrap:
Exit Sub
Resume
End Sub
Parfait.Merci
Bonjour,
Merci pour l'astuce !
C'est possible de sélectionner un fichier dans un formulaire, en double cliquant sur le champ par exemple et d'y faire apparaître le chemin dans le champ où on a double cliq ?
Bonjour Aurore,
il faudrait préciser la question, mais ca doit être possible.
Vous pouvez m'envoyer le fichier par email et je peux y jeter un oeil si ca n'est pas confidentiel.
Cordialement
Bonjour Gaëtan,
J'ai réussi ! J'ai utilisé votre procédure en remplaçant range par le nom du formulaire. Merci beaucoup !!
Par contre, j'ai une autre question. Au lieu de récupérer le chemin, est-ce possible de récupérer uniquement le nom du fichier ?
Mon document n'est pas confidentiel.
Ping :Excel VBA – Rapatrier les informations d’un fichier (chemin/emplacement et nom) - XLérateur
Bonjour,
Voici la réponse courte :
Right(fichier , Len(fichier ) - InStrRev(fichier , "\"))
Et la réponse "longue" :
https://www.xlerateur.com/vba-excel/2018/07/24/excel-vba-rapatrier-les-informations-dun-fichier-chemin-emplacement-et-nom-7225/
Merci pour votre question.
Gaetan