VBA : Sélectionner un fichier et mettre le chemin dans une cellule

Bon­jour à tous,

Voici un petit code sym­pa­thique pour sélec­tion­ner un fichi­er et met­tre le chemin d’ac­cès dans une cellule. 

Et ici, le lien vers le fichier

Avant d’a­jouter le code, il faut nom­mer la cel­lule stock­ant le nom du fichier.

choix-du-fichier

Ca ressem­ble à 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’u­tilise ce petit code pour importer des fichiers pour traite­ment, com­para­i­son, etc.

A bien­tôt.

Gae­tan

Pour marque-pages : Permaliens.

8 réponses à VBA : Sélectionner un fichier et mettre le chemin dans une cellule

  1. olivier dit :

    super ca marche tres bien sur excell mais pas sur vision

    visio ne con­nait pas .file­di­a­log

    est ce que tu sais ce que je dois activé?

    Mer­ci de ton aide

  2. Gaetan dit :

    Bon­jour,
    Je n’u­tilise pas Visio, mais peut être ceci :
    http://visguy.com/vgforum/index.php?topic=738.0

    ‘// Mod­ule: OpenExcelFile
    ‘//
    ‘// This is code that uses the Win­dows API to invoke the Open File
    ‘// com­mon dia­log. It is used by users to choose an Excel file that
    ‘// con­tains orga­ni­za­tion­al data.

    Pri­vate Declare Ptr­Safe Func­tion GetOpen­File­Name Lib “comdlg32.dll” _
    Alias “GetOpen­File­NameA” (OFN As OPENFILENAME) As Boolean

    Pri­vate Type OPENFILENAME
    lStruct­Size As Long
    hwn­dOwn­er As LongPtr
    hIn­stance As LongPtr
    lpstr­Fil­ter As String
    lpstr­Cus­tom­Fil­ter As String
    nMax­Cust­Fil­ter As Long
    nFil­terIndex As Long
    lpstr­File As String
    nMax­File As Long
    lpstr­FileTi­tle As String
    nMax­FileTi­tle As Long
    lpstrIni­tialDir As String
    lpstr­Ti­tle As String
    flags As Long
    nFile­Off­set As Integer
    nFile­Ex­ten­sion As Integer
    lpstrDe­fExt As String
    lCust­Da­ta As Long
    lpfn­Hook As LongPtr
    lpTem­plate­Name As String
    End Type

    Pub­lic Sub FindExcelFile(ByRef filePath As String, _
    ByRef can­celled As Boolean)

    Dim Open­File As OPENFILENAME
    Dim lRe­turn As Long
    Dim sFil­ter As String

    ’ On Error GoTo errTrap

    OpenFile.lStructSize = LenB(OpenFile)

    ‘// Sam­ple filter:
    ‘// “Text Files (*.txt)” & Chr$(0) & “*.sky” & Chr$(0) & “All Files (*.*)” & Chr$(0) & “*.*”
    sFil­ter = “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
    lRe­turn = GetOpenFileName(OpenFile)

    If lRe­turn = 0 Then
    can­celled = True
    filePath = vbNullString
    Else
    can­celled = False
    filePath = Trim(OpenFile.lpstrFile)
    filePath = Replace(filePath, Chr(0), vbNullString)
    End If

    Exit Sub

    errTrap:
    Exit Sub
    Resume

    End Sub

  3. GilH94 dit :

    Parfait.Merci

  4. Aurore dit :

    Bon­jour,
    Mer­ci pour l’astuce !
    C’est pos­si­ble de sélec­tion­ner un fichi­er dans un for­mu­laire, en dou­ble cli­quant sur le champ par exem­ple et d’y faire appa­raître le chemin dans le champ où on a dou­ble cliq ?

  5. Gaetan Mourmant dit :

    Bon­jour Aurore,
    il faudrait pré­cis­er la ques­tion, mais ca doit être possible.
    Vous pou­vez m’en­voy­er le fichi­er par email et je peux y jeter un oeil si ca n’est pas confidentiel.
    Cordialement

  6. Aurore dit :

    Bon­jour Gaëtan, 

    J’ai réus­si ! J’ai util­isé votre procé­dure en rem­plaçant range par le nom du for­mu­laire. Mer­ci beaucoup !! 

    Par con­tre, j’ai une autre ques­tion. Au lieu de récupér­er le chemin, est-ce pos­si­ble de récupér­er unique­ment le nom du fichier ? 

    Mon doc­u­ment n’est pas confidentiel.

  7. Ping :Excel VBA – Rapatrier les informations d’un fichier (chemin/emplacement et nom) - XLérateur

  8. Gaetan Mourmant dit :

    Bon­jour,
    Voici la réponse courte :
    Right(fichier , Len(fichier ) — InStrRev(fichier , “\”))
    Et la réponse “longue” :
    http://www.xlerateur.com/vba-excel/2018/07/24/excel-vba-rapatrier-les-informations-dun-fichier-chemin-emplacement-et-nom-7225/
    Mer­ci pour votre question.
    Gaetan

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.