Menu

[VBA execl] Ajout d'un bouton parcourir [Résolu/Fermé]

schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention - 17 juil. 2007 à 11:58 - Dernière réponse :  Gab
- 3 janv. 2018 à 15:22
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
Afficher la suite 

12 réponses

Meilleure réponse
Papou93 147 Messages postés mercredi 4 avril 2007Date d'inscription 5 juin 2012 Dernière intervention - Modifié par jordane45 le 31/01/2018 à 15:34
8
Merci
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.

Merci Papou93 8

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 24595 internautes ce mois-ci

schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention - 17 juil. 2007 à 14:09
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é !
Papou93 147 Messages postés mercredi 4 avril 2007Date d'inscription 5 juin 2012 Dernière intervention > schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention - 17 juil. 2007 à 14:31
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
schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention > Papou93 147 Messages postés mercredi 4 avril 2007Date d'inscription 5 juin 2012 Dernière intervention - 17 juil. 2007 à 14:43
Merci encore une fois !
schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention - 11 juil. 2013 à 14:23
2
Merci
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,
Merci ça fonctionne au poil !
schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention - 18 juil. 2007 à 15:16
0
Merci
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
Papou93 147 Messages postés mercredi 4 avril 2007Date d'inscription 5 juin 2012 Dernière intervention - 18 juil. 2007 à 19:06
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
schont 38 Messages postés samedi 14 juillet 2007Date d'inscription 11 juillet 2013 Dernière intervention > Papou93 147 Messages postés mercredi 4 avril 2007Date d'inscription 5 juin 2012 Dernière intervention - 19 juil. 2007 à 10:03
Merci
Réponse tardive mais qui pourra intéresser certains, remplacer la ligne :
.Show
par
If .Show = 0 Then Exit Sub
0
Merci
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