XL 2013 choix d'un fichier dans dossier

misteryann

XLDnaute Occasionnel
Bonjour le forum
J'ai un userform contenant un Label, une textbox et un bouton
Le label contient le chemin d'un dossier et le bouton doit permettre de sélectionner un fichier qui se trouve dans le chemin du label.
Or le code que j'applique au bouton ne parcours pas mais ouvre le chemin et ne permet pas de sélectionner le fichier souhaité.
Le fichier exemple est une version édulcorée de mon fichier de travail dans lequel le chemin indiqué dans le label varie en fonction de choix.
Merci pour votre aide
Bonne journée.
Misteryann
 

Pièces jointes

  • Choix du dossier.xlsm
    17.3 KB · Affichages: 20

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Je recycle mes posts ;)
https://www.excel-downloads.com/threads/pb-avec-activeworkbook-close.20022131/
A tester
VB:
Private Sub CommandButton1_Click()
Dim Classeur
Classeur = Application.GetOpenFilename("Fichiers XL,*.xl?", , "Sélectionnez le classeur source,svp")
If Classeur <> False Then
UserForm1.TextBox1 = Classeur
Label62 = Left(Classeur, InStrRev(Classeur, "\") - 1)
Else
MsgBox "Vous n'avez pas sélectionné de fichier!", vbCritical, "ERREUR"
End If
End Sub
Ensuite faudrait ajouter de quoi ouvrir le dit classeur, non ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez en ajoutant devant :
VB:
On Error Resume Next
ChDrive Label62.Caption: ChDir Label62.Caption
If Err Then MsgBox "Impossible de prendre comme courant le dossier" & vbLf & Label62.Caption _
   & vbLf & Err.Description, vbCritical, CommandButton1.Caption: Exit Sub
On Error GoTo 0
 

misteryann

XLDnaute Occasionnel
Bonjour Staple et dranreb.
C'est vrai que je n'ai pas précisé que le fichier est au format "pdf".
Cela donnerai quoi dans le code: (Fichier ..., *.pdf?) je suppose...

Private Sub CommandButton1_Click()
Dim Classeur
Classeur = Application.GetOpenFilename("Fichiers XL,*.xl?", , "Sélectionnez le classeur source,svp")
If Classeur <> False Then
UserForm1.TextBox1 = Classeur
Label62 = Left(Classeur, InStrRev(Classeur, "\") - 1)
Else
MsgBox "Vous n'avez pas sélectionné de fichier!", vbCritical, "ERREUR"
End If
End Sub

dranreb, je teste demain sur mon fichier de travail qui est sur un lecteur réseau.
Merci à vous deux.
Bien cordialement.
 

Staple1600

XLDnaute Barbatruc
Re,

@misteryann
C'était pas compliqué à modifier, non ? ;)
VB:
Private Sub CommandButton1_Click()
Dim PeDeFe
PeDeFe = Application.GetOpenFilename("Fichiers PDF,*.pdf", , "Sélectionnez le PeDeFe source,svp")
If PeDeFe <> False Then
UserForm1.TextBox1 = PeDeFe
Label62 = Left(PeDeFe, InStrRev(PeDeFe, "\") - 1)
Else
MsgBox "Vous n'avez pas sélectionné de PDF!" & Chr(13) & "(J'en suis fort chagriné, que diantre!)", vbCritical, "ERREUR"
End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Pour un lecteur réseau auquel aucune lettre de lecteur n'a été affectée vous serez peut être obligé de remplacer mon code par :
VB:
If CheminCourant(Label62.Caption) Then
   PeDeFe = Get OpenFileName( etc.
   If VarType(PeDeFe) = vbString Then
      P = InStrRev(PeDeFe, '\")
      Me.TextBox1.Text = Left$(PeDeFe, P - 1)
      Me.Label62.Caption = Mid$(PeDeFe, P + 1): End If
Else
   MsgBox "Impossible de prendre comme courant le dossier" & vbLf & Label62.Caption, _
   vbCritical, CommandButton1.Caption: Exit Sub
   End If
Avec en tête du module :
VB:
#If VBA7 Then
    Private Declare PtrSafe Function CheminCourant Lib "kernel32" _
        Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#Else
    Private Declare Function CheminCourant Lib "kernel32" _
        Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
#End If
 

Staple1600

XLDnaute Barbatruc
Re

Une variante (on change de boite de dialogue)
Ici on peut paramétrer plus de chose
Je le laisse tester (et adapter pour utilisation avec ton Userform)
(et voir les possibilités offerte par msoFileDialogFilePicker -> voir sur le Web)
PS: C'est en faisant des conneries qu'on apprend ;)
Donc n'hésite pas en à faire dans VBE ;)
VB:
Sub AutreVoie()
Dim Chemin$, NomFichier$, Mess$
With Application.FileDialog(msoFileDialogFilePicker)
    .Title = "Sélectionner votre fichier, svp": .AllowMultiSelect = False
    .Filters.Clear: .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
    .Filters.Add "Fichiers PDF", "*.pdf", 1: .FilterIndex = 1
    .InitialView = msoFileDialogViewProperties
        If .Show = -1 Then
        Chemin = .SelectedItems(1)
        NomFichier = Dir(.SelectedItems(1))
        Mess = "Path: " & Chemin & Chr(13) & "Nom Fichier: " & NomFichier
        MsgBox Mess, vbInformation, "Résultat Test"
        Else
        MsgBox "Vous n'avez pas sélectionné de fichier!" & Chr(13) & "(J'en suis fort chagriné, que diantre!)", vbCritical, "ERREUR"
    End If
End With
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin