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 !

Rechercher des sujets similaires à "choisir dossier destination lors enregistrement"