[VBA execl] Ajout d'un bouton parcourir

Résolu
schont Messages postés 33 Statut Membre -  
 Gab -
quel code dois-je utiliser pour ajouter un bouton parcourir dans une userform ?
Je voudrais ajouter un bouton de commande qui utilise la fonction parcourir et lorsque que le fichier désiré est sélection son chemin s'affiche dans une zone de texte se trouvant dans la même userform.
C'est pour lier une référence à fichier pdf.

Si quelqu'un a une idée ...

Merci
Configuration: Windows XP
Internet Explorer 6.0
excel 2003

4 réponses

  1. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Bonjour schont,

    Je pense que c'est ce que tu cherches :

    Private Sub CommandButton1_Click()
    
        With Application.FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = False
            .Show
            UserForm1.TextBox1.Text = .SelectedItems(1)
        End With
    
    End Sub


    Adapter les noms de contrôles à ton application.

    Cordialement.
    11
    1. schont Messages postés 33 Statut Membre 10
       
      Merci c'est exectement ce que je voulais, j'étais en train de patauger avec :

      Private Sub CommandButton3_Click()
      FileToOpen = Application _
      .GetOpenFilename("Fichiers PDF (*.pdf), *.pdf", 1, "Rechercher...")
      If FileToOpen = False Then
      MsgBox "Operation annulée", vbExclamation
      Exit Sub
      End If
      ' manque un truc ?!
      End Sub

      Petite question maintenant le chemin du fichier est copié dans ma TextBox11 et quand je clique sur un bouton "compléter" la valeur de ma TextBox est recopiée dans une cellule, le code est :

      Sheets("Feuil1").Cells(Lg, "I").Value = UserForm1.TextBox11.Value

      Le chemin du fichier s'affiche bien mais pas sous forme de lien ce qui est pratique pour l'ouvrir en un seul clic.

      C'est une option à cocher dans excel pour qu'il transforme un chemin en lien (je crois que word le fait tout seul quand on tape une adresse internet) ou c'est par VBA qu'il faut passer ?

      En tout cas bravo et merci pour la rapidité et l'efficacité !
      0
      1. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59 > schont Messages postés 33 Statut Membre
         
        Tu n'as qu'a àjouter ce code après que le Textbox soit renseigné :

        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=UserForm1.TextBox1.Text


        Tu peux remplacer Selection par une adresse de cellule fixe.

        Cordialement
        0
      2. schont Messages postés 33 Statut Membre 10 > Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci encore une fois !
        0
    2. Gab
       
      Merci les gars!
      0
  2. schont Messages postés 33 Statut Membre 10
     
    Bonjour,

    La méthode .GetOpenFilename ne semble pas proposer ce genre d'option.

    Je pense que l'on peut néanmoins simplifier un peu le code :

    Dim nom_fichier As String
    
    nom_fichier = Application.GetOpenFilename
    
    nom_fichier = Mid(nom_fichier, InStrRev(nom_fichier, "\") + 1, InStrRev(nom_fichier, ".") - InStrRev(nom_fichier, "\") - 1)
    
    Range("a1") = nom_fichier


    Cordialement,
    2
    1. Biorix
       
      Merci ça fonctionne au poil !
      0
  3. schont Messages postés 33 Statut Membre 10
     
    Je viens de m'apercevoir que lorsque l'on clique sur le bouton parcourir puis qu'après au lieu de cliquer sur "ouvrir" on clique sur "annuler" une erreur revient "erreur d'execution'5'" et un débogage est proposé.
    j'ai essayé avec
    If FileToOpen = False Then 
    MsgBox "Operation annulée", vbExclamation 
    Exit Sub 
    End If 


    mais avec ca même quand je clique sur "ouvrir" la message box s'ouvre et affiche le message.

    Merci de m'aider à résoudre ce problème
    0
    1. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
       
      Bonsoir schont,

      Je ne saisis pas le pourquoi de cette erreur, mais une solution simple et rapide est d'ajouter une ligne de traitement de l'erreur en début de la procédure ;
      Private Sub CommandButton1_Click()
          On Error Resume Next
          With Application.FileDialog(msoFileDialogOpen)
              .AllowMultiSelect = False
              .Show
              UserForm1.TextBox1.Text = .SelectedItems(1)
          End With
      
      End Sub

      Voilà qui est réparé !

      Cordialement
      0
      1. schont Messages postés 33 Statut Membre 10 > Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention  
         
        Merci
        0
    2. logical
       
      Réponse tardive mais qui pourra intéresser certains, remplacer la ligne :
      .Show
      par
      If .Show = 0 Then Exit Sub
      0
  4. Biorix
     
    Bonjour,

    Est-ce possible d'utiliser le bouton parcourir mais de récupéré uniquement le nom du fichier sans le chemin complet ni l'extension .xlsx?

    C'est à dire : "monfichier" au lieu de "C:\dossier\monfichier.xlsx"

    Car pour l'instant je n'ai pu faire qu'une manipulation compliqué pour isolerle nom :

    Dim fichier As String
    Dim fichier1 As String
    Dim fichier2 As String
    Dim fichier3 As String
    Dim nom As String

    fichier1 = Range("a1").Value

    For i = Len(fichier1) - 5 To 1 Step -1
    fichier2 = Mid(fichier1, i, 1)
    If fichier2 = "\" Then
    GoTo nom_fichier
    End If
    Next i
    nom_fichier: fichier3 = Mid(fichier1, i + 1)

    fichier = Left(fichier3, Len(fichier3) - 5)
    Range("a1") = fichier

    Merci
    0