Le principe de base d’un programme est de traiter des informations de sources diverses. La fonction GetOpenFilename permet de sélectionner un ou plusieurs fichiers à traiter à l’aide d’une boîte de dialogue. Le nom des fichiers sélectionnés est stocké dans une variable ; celle-ci peut ensuite être analysée par le programme VBA.
Cette fonction s’utilise ainsi :
Dim Nomdufichier as Variant NomduFichier = Application.GetOpenFilename(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
La variable associée à la fonction GetOpenFilename (ici Nomdufichier) doit être de type Variant. En effet, cette variable est amenée à stocker :
- une chaîne de caractères (type String) : le nom d’un ou de plusieurs fichiers selon le choix de l’utilisateur,
- une résultat booléen (type Boolean) Faux (false) si l’utilisateur ne sélectionne pas de fichier (clic sur le bouton “Annuler”).
Les paramètres de la fonction GetOpenFilename sont les suivants (source : https://msdn.microsoft.com/fr-fr/library/office/ff834966.aspx) :
Nom | Obligatoire/Facultatif | Type de données | Description |
---|---|---|---|
FileFilter | Facultatif | Variant | Chaîne spécifiant les critères de filtrage des fichiers. |
FilterIndex | Facultatif | Variant | Spécifie les numéros d’index des critères de filtrage des fichiers par défaut, de 1 au nombre de filtres défini dans FileFilter. Si cet argument n’est pas défini ou si sa valeur est supérieure au nombre de filtres présents, le premier filtre de fichiers est utilisé. |
Title | Facultatif | Variant | Spécifie le titre de la boîte de dialogue. Si cet argument n’est pas défini, le titre est « Ouvrir ». |
ButtonText | Facultatif | Variant | Macintosh uniquement. |
MultiSelect | Facultatif | Variant | True pour permettre la sélection de plusieurs noms de fichier. False pour ne permettre la sélection que d’un seul nom de fichier. La valeur par défaut est False. |
L’argument FileFilter se compose de paires de chaînes de filtrage des fichiers, suivies de la spécification de filtre de fichiers par caractère générique MS-DOS, les différentes parties et paires étant séparées par des virgules. Chaque paire est répertoriée dans la zone de liste déroulante Type de fichiers. Par exemple, la chaîne suivante spécifie deux filtres de fichiers, à savoir texte et macro complémentaire : « Fichiers texte (*.txt), *.txt,Fichiers de compléments (*.xla), *.xla ». Pour utiliser plusieurs expressions contenant des caractères génériques MS-DOS pour un seul type de filtre de fichiers, séparez les expressions à l’aide de point-virgules. Par exemple, « Fichiers Visual Basic (*.bas; *.txt),*.bas;*.txt ». Si l’argument FileFilter n’est pas défini, sa valeur par défaut est « Tous les fichiers (*.*),*.* ».
Exemple d’utilisation n° 1 : sélection d’un seul fichier
Dim NomFichier as Variant NomFichier = Application.GetOpenFilename("Fichiers Texte (*.txt),*.txt,Tous les fichiers (*.*),*.* ", 1, "Sélectionnez le fichier des écritures à importer", , False) If NomFichier = False then Exit Sub
Cet exemple est dédié au traitement de fichiers texte (sélection par défaut du fait du deuxième argument fixé à 1) mais permet également d’ouvrir n’importe quel type de fichiers (*.*). La fenêtre est intitulée “Sélectionnez le fichiers des écritures à importer”. Le quatrième argument n’est pas précisé, celui-ci n’étant paramétrable que sur la version Macintosh. Le dernier paramètre étant False, l’utilisateur ne peut sélectionner qu’un seul fichier.
If NomFichier = False then Exit Sub
Cette ligne de code permet de sortir de la procédure si l’utilisateur a annulé la sélection de fichier (en appuyant sur la touche Echap ou en cliquant sur annuler).
Exemple d’utilisation n° 2 : sélection de plusieurs fichiers
Cet exemple est paramétré pour une multi-sélection (dernier paramètre défini à True). Pour sélectionner plusieurs fichiers, maintenir la touche Ctrl appuyée et cliquer sur les fichiers souhaités. La variable NomFichier prend alors la forme d’une variable tableau contenant le nom des fichiers retenus (ou d’une variable booléenne si l’utilisateur ferme la fenêtre sans sélectionner un fichier).
Dim NomFichier as Variant Dim i as Integer NomFichier = Application.GetOpenFilename("Fichiers Texte (*.txt),*.txt,Tous les fichiers (*.*),*.* ", 1, "Sélectionnez le ou les fichiers des écritures à importer", , True) If IsArray(NomFichier) = False Then Exit Sub For i = 1 To UBound(NomFichier) MsgBox NomFichier(i) Next
IsArray(NomFichier) renvoie False si aucun fichier n’a été sélectionné par l’utilisateur (la fonction IsArray détermine si NomFichier est une variable tableau donc Array), dans ce cas le programme sort de la procédure en cours (Exit Sub).
La boucle For… to… Next permet de récupérer la liste des fichiers stockée dans la variable NomFichier, qui dans ce cas fait office de variable tableau. Dans le présent exemple, la boucle redescend toutes les occurrences (de 1 à UBound(NomFichier)) de la variable NomFichier et les affiche à l’écran (MsgBox).
Approfondir le sujet : Programmer en VBA


Derniers articles parBenoît RIVIERE (voir tous)
- Projet IXP (v1.21beta) : nouvelle version en ligne - mardi 7 janvier 2025
- Excel : conserver les zéros non significatifs à gauche - dimanche 5 janvier 2025
- Excellente année 2025 ! - mercredi 1 janvier 2025
- Projet IXP (v1.21beta) : contrôles de cohérences et gestion MULTIFEC - lundi 30 décembre 2024
- Joyeuses fêtes de fin d’année ! - mardi 24 décembre 2024
Bonjour
comment ouvrir ce fichier sélectionné de cette boite ouverte, supposant que c’est un fichier PDF.
Merci d’avance
Bonjour,
Si le but est de récupérer des données contenues dans le PDF, je vous invite à consulter cet article : https://www.auditsi.eu/?p=10302.
Cordialement,
B. RIVIERE