patricktoulon
XLDnaute Barbatruc
Bien utiliser le dialog (Application.GetSaveAsFilename)
par patricktoulon
par patricktoulon
Bonjour a tous
la demande étant apparue plusieurs fois cette année ,je vous propose un mini tuto sur ce dialog
La fonction "Application.GetSaveAsFilename" permet d’ouvrir une boîte de dialogue
d’enregistrement de fichier, sans pour autant enregistrer réellement.
Elle retourne uniquement le chemin du fichier choisi par l’utilisateur.
----------------------------------------------------
Syntaxe de base :
----------------------------------------------------
Application.GetSaveAsFilename( _
InitialFileName:= <chemin par défaut>, _
FileFilter:= <filtres de fichiers>, _
Title:= <titre de la fenêtre> _
)
- InitialFileName : (facultatif) chemin complet ou nom par défaut. (type String)
- FileFilter : (facultatif) chaîne qui définit la légende et/ou les extensions visibles. (type String)
- Title : (facultatif) titre affiché dans la boîte. (type String)
----------------------------------------------------
Exemple 1 : plusieurs légendes + plusieurs extensions
----------------------------------------------------
VB:
Sub test2()
' Boîte de dialogue avec choix légende et extension
l_e = Array("fichier Texte,*.txt", "fichier csv,*.csv", "fichier de command, *.cmd")
initName = "C:\Users\patricktoulon\Desktop\titi"
filtre = Join(l_e, ",") ' séparation obligatoire par virgule
dest = Application.GetSaveAsFilename( _
InitialFileName:=initName, _
FileFilter:=filtre, _
Title:="ENREGISTREMENT DU FICHIER")
End Sub
-Quand il y a plusieurs légendes + extensions, elles doivent être séparées par des **virgules** et non un point virgule .
- FileFilter:=légende 1,extension 1,légende 2,extension 2,etc...........
-Ne pas mettre d’extension dans "InitialFileName" si plusieurs extensions possibles,
- sinon le nom par défaut (inscrit dans le InitialFileName)n’apparaît pas dans l'input du dialog .
-l'extension par défaut dans l'input du dialogue sera la première
----------------------------------------------------
Exemple 2 : une seule légende + plusieurs extensions
----------------------------------------------------
VB:
Sub test3()
' Une légende avec plusieurs extensions
legende = "Tous les fichiers de type "
Exts = Array("txt", "csv", "cmd")
filtr = "*." & Join(Exts, ";*.") ' séparation obligatoire par point-virgule
initName = "C:\Users\patricktoulon\Desktop\titi" ' sans extension
dest = Application.GetSaveAsFilename( _
InitialFileName:=initName, _
FileFilter:=legende & "(" & filtr & ")," & filtr, _
Title:="ENREGISTREMENT DU FICHIER")
End Sub
- Quand une seule légende couvre plusieurs extensions, celles-ci doivent être séparées par des **points-virgules**.
- Filefilter:="légende (extension 1 ; extension 2 ; extension 3)"
-Là encore, ne pas mettre d’extension dans "InitialFileName".
-sinon le nom par défaut (inscrit dans le InitialFileName)n’apparaît pas dans l'input du dialog
-l'extension par défaut dans l'input du dialogue sera la première
----------------------------------------------------
Résumé des séparateurs :
----------------------------------------------------
- Plusieurs légendes + plusieurs extensions → séparateur **virgule**
- Une seule légende + plusieurs extensions → séparateur **point-virgule**
----------------------------------------------------
Bien saisir la nuance :
----------------------------------------------------
-"GetSaveAsFilename" ne crée pas réellement le fichier. Il ne fait que retourner
le chemin choisi par l’utilisateur.
- Il faut ensuite utiliser des instructions comme "Open For " ou "SaveAs" etc... pour enregistrer réellement le fichier.
Patrick
Dernière édition: