Bonjour à tous les amis du Forum.
Je reviens vers vous une fois de plus pour vous demander
le code pour ouvrir la boîte de dialogue "Ouvrir" voir fichier joint
et arriver au répertoire spécifié sans avoir à choisir le lecteur, le
répertoire, le ou les sous-répertoires et arriver directement sur
le répertoire spécifié à savoir : D:\M_TRAVAIL\SAUVEGARDES\FICHIERS\
et ce, en cliquant sur l'icône PDF affectée à la macro ci-dessous.
Voir le fichier joint.
Par avance merci.
Bien cordialement.
Actuellement, j'ai ce code qui fonctionne très bien
mais qui m'oblige à aller sur D: le répertoire TRAVAIL, SAUVEGARDES, FICHIERS
et sélectionner le fichier avec l'extension .PDF pour l'envoyer par mail, pour
ce faire, je tape "=" sur la cellule F2 ou G2 pour insérer le nom du fichier avec
le chemin complet.
Sub LeFichier()
Dim file_path As String
file_path = Application.GetOpenFilename(MultiSelect:=False)
If file_path <> "False" Then
Selection.Value = file_path
End If
End Sub
Dim fileName
ChDrive "D:"
ChDir "D:\M_TRAVAIL\SAUVEGARDES\FICHIERS\"
fileName = Application.GetOpenFilename(MultiSelect:=False)
If fileName <> "False" Then
Selection.Value = fileName
End If
Sub OuvrirSurDossier()
Dim fld As FileDialog, Mondossier$
racine = "C:\Users\PC_PAPA\Desktop\" ' Ajuster chemin désiré
Mondossier = Dir(racine, vbDirectory)
If Mondossier <> "" Then
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = (racine & Mondossier & "\*.pdf")
.Show
End With
End If
End Sub
Bonjour @sylvanu
Merci pour ta réponse.
J'ai un problème, avec un message d'erreur :
code adapté :
Sub LeFichier()
Dim fld As FileDialog, Mondossier$
racine = "D:\M_TRAVAIL\SAUVEGARDES\FICHIERS\"
Mondossier = Dir(racine, vbDirectory)
If Mondossier <> "" Then
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = (racine & Mondossier & "\*.pdf")
.Show
End With
End If
End Sub
Bonjour,
Supprimez la ligne Dim.
Si ca marche c'est qu'il y a un mauvais typage.
Mais sur mon PC ca marche.
quand je teste votre macro :
VB:
Sub LeFichier()
Dim fld As FileDialog, Mondossier$
racine = "D:\M_TRAVAIL\SAUVEGARDES\FICHIERS\"
Mondossier = Dir(racine, vbDirectory)
If Mondossier <> "" Then
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = (racine & Mondossier & "\*.pdf")
.Show
End With
Else
MsgBox "Mondossier est vide."
End If
End Sub
Il me dit que MonDossier est vide, ce qui veut dire que chez vous la variable Racine n'est pas la bonne. Vérifiez le chemin.
Dans l'explorateur, allez sur votre dossier. si vous cliquez sur la barre d'adresses vous avez le chemin auquel vous ajoutez le dernier "\". ( ça peut éviter des erreurs de syntaxe )
Sub LeFichier()
Dim fld As FileDialog, Racine$, Fichier$ 'variable
Racine = "D:\M_TRAVAIL\SAUVEGARDES\FICHIERS" 'chemin dossier de base
If Dir(Racine, vbDirectory) = "" Then Exit Sub 'si le chemin n'existe pas bye!bye!
Set fld = Application.FileDialog(msoFileDialogOpen) 'creation de l'object dialog(early binding)
fld 'donc pour ce dialog
.InitialFileName = (Racine & "\*.pdf") 'sa situation initiale est dans le dossier racine
If .Show = -1 Then 'si le show renvoie (true soit -1)
Fichier = .SelectedItems(1) 'alors fichier = le chemin complet du fichier selectionné
Else: MsgBox "ouverture annulée !": Exit Sub 'si annulé chtaoh bye circulez y rien a voir
End If
End With
MsgBox Fichier 'au cas ou le show est true on affiche pour la demo le chemin complet du fichier dans un msgbox
End Sub
Bonjour,
Supprimez la ligne Dim.
Si ca marche c'est qu'il y a un mauvais typage.
Mais sur mon PC ca marche.
quand je teste votre macro :
VB:
Sub LeFichier()
Dim fld As FileDialog, Mondossier$
racine = "D:\M_TRAVAIL\SAUVEGARDES\FICHIERS\"
Mondossier = Dir(racine, vbDirectory)
If Mondossier <> "" Then
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = (racine & Mondossier & "\*.pdf")
.Show
End With
Else
MsgBox "Mondossier est vide."
End If
End Sub
Il me dit que MonDossier est vide, ce qui veut dire que chez vous la variable Racine n'est pas la bonne. Vérifiez le chemin.
Dans l'explorateur, allez sur votre dossier. si vous cliquez sur la barre d'adresses vous avez le chemin auquel vous ajoutez le dernier "\". ( ça peut éviter des erreurs de syntaxe ) Regarde la pièce jointe 1167591
J'ai respecté scrupuleusement vos remarques, j'ai toujours le message d'erreur.
En mettant 'Option Explicit en commentaire, comme cité sur mon message précédent
la boîte de dialogue s'ouvre bien, les fichiers sont bien visibles, je choisi un fichier, j'ai
l'aperçu et en cliquant ouvrir pour le copier, pas de message d'erreur, mis il n'est pas copié.
Re,
Moi, je répondais à la question posée : "Code pour la boîte Ouvrir" et rien d'autre.
La macro ouvre la boite de dialogue sur le bon dossier et avec le bon filtre des pdf. Comme demandé :
Je reviens vers vous une fois de plus pour vous demander le code pour ouvrir la boîte de dialogue "Ouvrir" voir fichier joint
et arriver au répertoire spécifié sans avoir à choisir le lecteur, le
répertoire, le ou les sous-répertoires et arriver directement sur
le répertoire spécifié à savoir :
Re @sylvanu
En effet ouvrir la boîte de dialogue "Ouvrir", après sélectionner un fichier,
le copier dans la cellule active, et fermer la boîte dialogue. Désolé, je me suis mal exprimé et je me suis référé à la macro que
j'avais joint et qui enchainait toutes ces actions.
Autant pour moi.
Ok, j'ai compris.
En PJ un essai avec cette macro:
VB:
Sub RécupérerNomFichier()
Dim fld As FileDialog, Mondossier$
racine = "g:\Users\PC_PAPA\Documents\" ' A ajuster
Mondossier = Dir(racine, vbDirectory)
If Mondossier <> "" Then
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = (racine & Mondossier & "\*.pdf")
If .Show = -1 Then
T = Split(.SelectedItems(1), "\")
ActiveCell = T(UBound(T))
End If
End With
End If
End Sub
Le nom du fichier est collé dans la cellule active.
Re @sylvanu.
Merci pour ton retour. Merci pour le temps que vous avez passé sur mon problème.
toi @sylvanu , @patricktoulon ainsi que @xUpsilon.
Ca marche très bien.
Encore désolé de m'être mal exprimé.
Bonne soirée à tous.
Sub RécupérerNomFichier()
Dim fld As FileDialog, Mondossier$
racine = "g:\Users\PC_PAPA\Documents\" ' A ajuster
'racine = "C:\Users\patrick1\Desktop\"
Mondossier = Dir(racine, vbDirectory)
If Mondossier <> "" Then
Set fld = Application.FileDialog(msoFileDialogOpen)
With fld
.InitialFileName = (racine & Mondossier & "\*.pdf")'ici racine suffit
MsgBox racine & Mondossier & "\*.pdf"
If .Show = -1 Then
T = Split(.SelectedItems(1), "\")
ActiveCell = T(UBound(T))
End If
End With
End If
End Sub
ne pas confondre un x= dir chemin,vbdirectory)
et un
x=dir(chemin &"\*.*)
le dir vbdirectory renvoi le nom du premier dossier si il y a des subfolder
ou
le nom du dossier sil il n'y a pas de subfolder si il n'y a pas de subfolder le premier dossier se nomme "." et est inexploitable par vba c'est un dossier system virtuel