[RESOLU] Probleme Application FileDialog

Probleme Application FileDialog [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 30-04-2009 à 16:43:15    

Bonjour,
 
J'ai une macro qui utilise une interface graphique. Sur cette interface, j'utilise 2 boutons qui me permettent de selectionner des fichiers specifiques.
 
Le probleme, c'est qu'une fois que j'ai utilise le premier, il garde en memoire le type de fichier et me repropose a chaque fois le meme type de fichier alors que ca devrait changer.... Z'avez rien compris? Alors voici un exemple!
 
 
Je lance l'application et je clique sur le bouton 2 qui me sert a selectionner un fichier de type "*.spe". Je selectionne mon fichier sans probleme.
Je clique sur le bouton 4 qui me sert a selectionner des fichiers de type "*.lcs" et la il me propose les fichiers de type "*.spe". Il faut que je change a chaque fois le type de fichier et ca commence a me gonfler serieux (surtout que derriere, ca peut entrainer pas mal d'erreurs!
 
Si je lance une deuxieme fosi l'application, il a garde en memeoire le dernier type de fichier selectionne et me le repropose....
 
Voici le code!
 

Code :
  1. Private Sub CommandButton4_Click()
  2. MsgBox ("Attention : l'adresse ne doit pas comporter d'espace" )
  3. Dim fdChoix As FileDialog
  4. Dim strNomfichier As String
  5.     Set fdChoix = Application.FileDialog(msoFileDialogFilePicker) 'choix de fichier
  6.     fdChoix.ButtonName = "Choisir" 'nom du bouton
  7.     fdChoix.Title = "Choisir un fichier .lcs"  ' titre de la boite
  8.     fdChoix.Filters.Add "Fichiers .lcs", "*.lcs" 'filtre des fichiers
  9.     fdChoix.InitialFileName = "H:" 'dossier initial
  10.     fdChoix.AllowMultiSelect = False 'pas de multi sélection
  11.     If fdChoix.Show = False Then
  12.         MsgBox "Choix annulé"
  13.         Exit Sub
  14.     Else
  15.         strNomfichier = fdChoix.SelectedItems(1) 'on stocke le nom du fichier sélectionné
  16.         Me.TextBox2.Value = strNomfichier
  17.         MsgBox (strNomfichier & " sélectionné" ) 'traitement
  18.     End If
  19. End Sub
  20. Private Sub CommandButton2_Click()
  21. MsgBox ("Attention : l'adresse ne doit pas comporter d'espace" )
  22. Dim fdChoixSpe As FileDialog
  23. Dim strNomfichSpe As String
  24.     Set fdChoixSpe = Application.FileDialog(msoFileDialogFilePicker) 'choix de fichier
  25.     fdChoixSpe.Title = "Choisir le fichier spe" ' titre de la boite
  26.     fdChoixSpe.Filters.Add "Fichiers spe", "*.spe" 'filtre des fichiers
  27.     fdChoixSpe.InitialFileName = "H:" 'dossier initial
  28.     fdChoixSpe.AllowMultiSelect = False 'pas de multi sélection
  29.     If fdChoixSpe.Show = False Then
  30.         MsgBox "Choix annulé"
  31.         Exit Sub
  32.     Else
  33.         strNomfichSpe = fdChoixSpe.SelectedItems(1) 'on stocke le nom du fichier sélectionné
  34.         Me.TextBox1.Value = strNomfichSpe
  35.         MsgBox (strNomfichSpe & " sélectionné" ) 'traitement
  36.     End If
  37. End Sub


 
Merci de m'eviter de devenir fou!


Message édité par malaka le 30-04-2009 à 18:23:40
Reply

Marsh Posté le 30-04-2009 à 16:43:15   

Reply

Marsh Posté le 30-04-2009 à 17:01:38    

D'après la documentation, il existe un paramètre optionnnel supplémentaire pour Filters.Add qui est un numéro d'instance. Donc, peut-être qu'il faudrait essayer :

fdChoix.Filters.Add "Fichiers .lcs", "*.lcs", 10
...
fdChoixSpe.Filters.Add "Fichiers spe", "*.spe", 11

Reply

Marsh Posté le 30-04-2009 à 17:28:16    

Le parametre en question est une adresse?!?! Ca me genere le message suivant "Erreur 9  L'indice n'appartient pas a la selection"....


Message édité par malaka le 30-04-2009 à 17:32:31
Reply

Marsh Posté le 30-04-2009 à 17:52:31    

Salut, placer


fdChoix.Filters.Clear


et


fdChoixSpe.Filters.Clear

aux endroits idoines


Message édité par kiki29 le 30-04-2009 à 17:52:49
Reply

Marsh Posté le 30-04-2009 à 18:23:11    

Nickel ca marche parfaitement! :jap:  
 
En l'occurence, je les ai palces juste avant mes filtres!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed