Trouver un fichier VBA Excel

Résolu
2pax.cruz -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai un formulaire excel et j'aimerais que l'utilisateur puisse rechercher un fichier afin d'utiliser l'emplacement du fichier dans le fichier excel.

Je ne sais pas si je suis clair.
Mais il y'aurais un menu comme lorsqu'on veut ouvrir un fichier. Mais ici, il selectionnerait le fichier en naviguant au travers des dossiers, puis on récupérerait l'emplacement du fichier pour l'utiliser dans Excel.

Merci.

4 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,
    Tu peux adapter la fonction SelectionFichier() trouvée dans cette astuce, comme ceci :

    Sub SelectionFichier()
    Dim nomfich As String, i As Integer
        nomfich = Application.GetOpenFilename(FileFilter:="(*.*),*.*" _
                , Title:="Sélectionnez le fichier à convertir")
        If nomfich = "Faux" Then 'pas de sélection faite
            Exit Sub
        End If
        For i = Len(nomfich) To 2 Step -1
            If Mid(nomfich, i, 1) = "" Then Exit For
        Next i
        Chemin = Left(nomfich, i)
        Fichier = Mid(nomfich, i + 1)
        MsgBox Chemin & " " & Fichier
    End Sub
    0
  2. 2pax.cruz
     
    Ca fonctionne très bien!

    Par contre, est-il possible de seulement récupérer le nom du fichier?

    Car ça me donne l'emplacement entier. Par exemple : c:\blabla\fichier.doc

    Or, je voudrais juste avoir le "fichier.doc"

    Car le fichier est destiné à être envoyé et vu que les dossiers varient d'un pc à l'autre...
    0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bien sur, en manipulant un peu le code et la chaîne de caractère tu peux faire :

    Sub SelectionFichier()
    Dim nomfich As String, i As Integer
        nomfich = Application.GetOpenFilename(FileFilter:="(*.*),*.*" _
                , Title:="Sélectionnez le fichier à convertir")
        If nomfich = "Faux" Then 'pas de sélection faite
            Exit Sub
        End If
        For i = Len(nomfich) To 2 Step -1
            If Mid(nomfich, i, 1) = "\" Then Exit For
        Next i
        nomfich = Right(nomfich, Len(nomfich) - i)
        
        MsgBox nomfich
    End Sub
    0
  4. 2pax.cruz
     
    Un grand merci \o/

    Vraiment!
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      bonjour,
      a la bourre mais
      la boucle est inutile dans ce cas

      Dim nomfich As String, i As Integer
          nomfich = Application.GetOpenFilename(FileFilter:="(*.*),*.*" _
                  , Title:="Sélectionnez le fichier à convertir")
          If nomfich = "Faux" Then 'pas de sélection faite
              Exit Sub
          End If
          tablo = Split(nomfich, "\")
          nomfich = tablo(UBound(tablo))


      attention quand m^me aux astuces ccm...
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut,
      merci du coup de main. 'Fectivement, pas besoin de boucle et ta proposition est claire.
      Par contre en ce qui concerne cette astuce, la provenance de Lermitte222 est un gage de qualité, en tout cas, il me semble.
      A +
      0
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Et pour rester dans la m^me technique pour extraire le chemin seul (il y a d'autres manières mais...)
      Dim nomfich As String, chemin As String
      Dim tablo
          nomfich = Application.GetOpenFilename(FileFilter:="(*.*),*.*" _
                  , Title:="Sélectionnez le fichier à convertir")
          If nomfich = "Faux" Then 'pas de sélection faite
              Exit Sub
          End If
          tablo = Split(nomfich, "\")
          nomfich = tablo(UBound(tablo))
          ReDim Preserve tablo(UBound(tablo) - 1)
          chemin = Join(tablo, "\")


      ma réflexion sur les astuces ne concernait pas la qualité de l'auteur mais un code pouvant être amélioré comme souvent dans cette rubrique et comme souvent dans ceux que je propose
      0