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
Argument | Description |
FileFilter | Chaîne spécifiant les critères de filtrage des fichiers. Ex (« Fichiers xlsx (*.xlsx), *.xlsx » ) |
FilterIndex | |
Title | Le titre à afficher en haut de la boîte de dialogue |
MultiSelect | False 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