Choisir le dossier de destination lors de l'enregistrement
Bonjour a tous,
Je vous ecrit pour repondre a une problematique sous VBA.
J'ai ecrit un code VBA pour enregistrer automatiquement un onglet excel en PDF dans un dossier de destination sur mon ordinateur.
Je vous ai mis le code plus bas.
Ca marche parfaitement et mon fichier s'enregistre a l'endroit indique.
Cependant, comme le fichier est amene a etre utilise par d'autres utilisateurs sur d'autres ordinateurs, j'aimerais que la macro demande lors de son lancement, le dossier de destination ("la fonction parcourir d'excel") souhaite par l'utilisateur.
Le nom sera impose, mais le dossier d'enregistrement doit pouvoir varier.
Je n'ai aucune idee de comment appeler cette fonction "Parcourir". Est ce possible pour vous de m'aider ?
Merci par avance
Cordialement
Thomas
Voici le code initial
Private Sub cmdSavePDF_Click()
Dim fichier As String
With Worksheets("Synthesis Summary")
fichier = "\" & cboSite.Value & "-" & cboYear.Value & ".pdf"
Dossier = "C:\Users\tdelalande\Desktop\Immochan Chine\Asset Management\Book Patrimoine\Matrice Site by site\Fiche 2016"
Chemin = Dossier & fichier
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
End With
End Sub
bonjour
avec cette fonction par exemple :
Function ChoixDossier()
If Val(Application.Version) >= 10 Then
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ActiveWorkbook.Path & "\"
.Show
If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With
Else
ChoixDossier = InputBox("Répertoire?")
End If
End Function
et dans ton code remplacer
Dossier = "C:\Users\tdelalande\Desktop\Immochan Chine\Asset Management\Book Patrimoine\Matrice Site by site\Fiche 2016"
par
Dossier = ChoixDossier
fred
Bonjour,
Merci pour votre reponse.
J'ai donc bien compris que l'application recherche folder c'etait "Application.FileDialog(msoFileDialogFolderPicker)"
Voici d'autres interrogations:
- ".InitialFileName = ActiveWorkbook.Path & "\" = Permet de definir le nom de depart et notamment l'endroit ou la boite de dialogue va s'ouvir, cest a dire la ou le classeur actuel est enregistre
- .show = Pour l'ouvir
Par contre toutes cette partie la je ne la comprends pas
"If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With"
Cela signifie que je peux aller plus loin dans l'arborescence mais pas revenir ? J'ai fait un test et ca ne fonctionne pas si je veux changer totalement le chemin et l'enregistrer a un autre endroits.
Et aussi cette partie la :
Else
ChoixDossier = InputBox("Répertoire?")
Signifie que sila version est inferieur a Excel 2010, cette fonction suffit pour ouvrir la boite dedialogue ?
Merci de nouveau pour votre aide precieuse!
bonjour
Par contre toutes cette partie la je ne la comprends pas
"If .SelectedItems.Count > 0 Then
ChoixDossier = .SelectedItems(1)
Else
ChoixDossier = ""
End If
End With"
Cela vérifie qu'un dossier a été choisi, et donc on retourne le chemin du dossier choisi, si sélection de plusieurs dossiers seul le chemin du premier sera renvoyé sinon la fonction renvoi rien = ""
Cela signifie que je peux aller plus loin dans l'arborescence mais pas revenir ? J'ai fait un test et ca ne fonctionne pas si je veux changer totalement le chemin et l'enregistrer a un autre endroits.
si si on peut aller ou on veut dans l'ordinateur.. très souvent quand j'utilise cette fonction c'est pour aller dans un sous chemin du fichier actuel d'ou le initial =activeworkbook.path si ce paramètre n'est pas mis la fenêtre s'ouvre directement sur mes documents (si ma mémoire est bonne)
ChoixDossier = InputBox("Répertoire?")
Signifie que sila version est inferieur a Excel 2010, cette fonction suffit pour ouvrir la boite dedialogue ?
Non cela n'est pas lié a MSoffice 2010 mais la fonction msoFileDialogFolderPicker n'est apparue que depuis office 2002 d'ou le test
Val(Application.Version) >= 10
sinon on met un input box et là l'utilisateur doit ecrire a la main le chemin sans que la fenetre parcourir ne s'affiche...
pour plus de detail sur application.version
https://www.excel-pratique.com/fr/astuces_vba/action_differente_selon_version_excel.php
étant en 2016 on pourrait se dire qu'il n'existe plus d'office antérieur a 2002... mais bon je préfère garder ce code qui fonctionne quelque soit la version d'office...
fred
Merci beaucoup pour votre aide !