Il est de bon ton de se souhaiter la bonne année. Mais vous, et vous seul, pourrez faire en sorte que cette année soit bonne, meilleure que celle qui vient de s'écouler. Apprenez à ne compter que sur vous, car personne n'est plus qualifié que vous-même pour bâtir, réparer ou améliorer votre propre vie. Personne ne fera les choses à votre place. D'ailleurs, tout ce que les autres peuvent faire, c'est souhaiter que vous le fassiez. Et ne croyez pas que tout ceux qui vous entourent vous apporteront des solutions : certains font juste partie de vos problèmes. Transformez vos résolutions en actes, et dans douze mois, retournez-vous et souriez-vous fièrement : C'était long. C'était difficile. Mais ça y est : 2017 était une bonne année, merci Moi.

Les fichiers

Utilisation de la boîte de dialogue Fichier/Ouvrir (Application.GetOpenFileName)

Il est parfois bien pratique de pouvoir laisser l'utilisateur choisir un ou plusieurs fichiers sur son disque dur (Afin de les ouvrir, de les vérifier, de les comparer, ...) Cette opération se fait très simplement grâce à l'instruction Application.GetOpenFileName. Une fois que l'utilisateur a sélectionné un ou plusieurs fichiers dans la boîte de dialogue, on en fait ce qu'on veut : S'il n'a choisi qu'un fichier, son nom et son chemon d'accès (Exemple C:\Mes Documents\Test.TXT) seront stockés dans une variable, ou, s'il en a choisi plusieurs, dans un tableau de chaînes de caractères

Attention : aussi étrange que ça puisse paraître, Application.GetOpenFileName ne fonctionne PAS dans VBA Access.


Utilisation basique de GetOpenFileName

Sub OuvreFichier1()
  Dim QuelFichier
  QuelFichier = Application.GetOpenFilename()
  MsgBox QuelFichier
End Sub


Dans le cas ou l'utilisateur clique sur Annuler au lieu de Ouvrir, alors, QuelFichier contient simplement False

Sub OuvreFichier2()
  Dim QuelFichier
  QuelFichier = Application.GetOpenFilename()
  If QuelFichier <> False Then
    MsgBox QuelFichier
  Else
    MsgBox "Vous n'avez pas sélectionné de fichier"
  End If

End Sub


Ici, nous donnons la possibilité de choisir plusieurs types de fichiers. Si vous exécutez ce code, vous aurez ceci dans la liste des types de fichiers :

Sub OuvreFichier3()
  Dim QuelFichier
  QuelFichier = Application.GetOpenFilename("Fichiers Visual Basic,*.bas;*.txt, Trucs Excel, *.xls;*.xlt;*.xla")
  MsgBox QuelFichier
End Sub


Comme il ne s'agit pas forcément d'ouvrir le fichier choisi, nous avons la possibilité de donner un autre titre à la boîte de dialogue :

Sub OuvreFichier4()
  Dim QuelFichier
  QuelFichier = Application.GetOpenFilename(, , "Sélectionnez votre source de données")
  MsgBox QuelFichier
End Sub


Dans le cas ou l'on désire pouvoir sélectionner plusieurs fichiers à la fois, ce n'est plus simplement dans une variable QuelFichier que va être stocké le nom du fichier, mais comme il y en a plusieurs, c'est dans un tableau de chaînes de caractères qu'ils vont être stockés, de 1 jusqu'au nombre de fichiers. Vous constatez d'ailleurs que QuelFichier s'est transformé en QuelFichier(). Ubound(QuelFichier) renvoie le nombre de fichiers sélectionnés, et les différents fichiers sont stockés dans QuelFichier(1), QuelFichier(2), etc. jusqu'a QuelFichier(Ubound(QuelFichier))

Sub OuvreFichier5()
  Dim QuelFichier()
  QuelFichier = Application.GetOpenFilename(, , , , True)
  For Ctr = 1 To UBound(QuelFichier)
    MsgBox QuelFichier(Ctr)
  Next

End Sub


Exercice

Ecrivez un programme qui demande à l'utilisateur de sélectionner un certain nombre de fichiers à l'extension .DOC, et stockez leur nom dans les cellules A1, A2, A3, etc. dans la feuille courante. La solution se trouve ici plus bas, mais en blanc sur fond blanc. Pour la découvrir, il vous faut la copier/Coller dans votre environnement VBA

Sub OuvreFichierExercice()
  Dim QuelFichier()
  QuelFichier = Application.GetOpenFilename("Fichiers Word,*.doc", , , , True)
  For Ctr = 1 To UBound(QuelFichier)
    Cells(Ctr, 1) = QuelFichier(Ctr)
  Next
End Sub