GetOpenFileName

La méthode Workbooks.Open (« nom du classeur ») ouvre le classeur indiqué et l’ajoute à la collection Workbooks des classeurs ouverts. Si ce classeur n’existe pas (ou plus exactement, si VBA ne parvient pas à trouver le classeur), cela engendre une erreur d’exécution

Mais comment procéder si le nom du classeur est susceptible de changer ? Une des réponses possibles se nomme :

Application.GetOpenFileName.

Cette méthode permet d’afficher la boîte de dialogue standard d’Excel pour ouvrir un fichier, ce qui permet de sélectionner le fichier que l’on souhaite ouvrir

En réalité cette méthode n’ouvre pas réellement le fichier choisi mais à l’instar d’une fonction, elle renvoie le texte du nom du fichier sélectionné. Il faut donc récupérer ce nom dans une variable et se servir de cette variable comme argument du fichier à ouvrir dans Workbooks.Open

Si l’utilisateur ne sélectionne pas de fichier ou annule la boîte de dialogue, Application.GetOpenFileName va renvoyer la valeur false

Il faut donc toujours commencer par tester si la méthode a renvoyé False avant de réellement essayer d’ouvrir ce fichier


Dim Nom_Fichier As Variant

Nom_Fichier = Application.GetOpenFilename
If Nom_Fichier <> False Then
Workbooks.Open (Nom_Fichier)
Else
MsgBox « Vous n’avez pas sélectionné de fichier ! », vbExclamation
End If


Le code ci dessus fonctionne mais il est souvent préférable de limiter les types de fichiers comme par exemple uniquement les fichiers de type Excel.

Les arguments optionnels

ArgumentDescription
FileFilterChaîne spécifiant les critères de filtrage des fichiers.
Ex (« Fichiers xlsx (*.xlsx), *.xlsx » )
FilterIndex
TitleLe titre à afficher en haut de la boîte de dialogue
MultiSelectFalse par défaut : 1 seul nom de fichier est autorisé
True : Autorise la multi sélection

Nom_Fichier = Application.GetOpenFilename(« fichiers excel (*.xlsx ; *.xls), *.xlsx ; *.xls, fichiers txt (*.txt), *.txt « , , « Selectionnez le fichier à traiter »)

Ici la méthode GetOpenFilename affiche à la fois les fichiers Excel et les fichiers texte de type TXT

Et maintenant à vous de jouer