Problème de récupération de valeur d'une ListBox dans une procédure

Problème de récupération de valeur d'une ListBox dans une procédure - VB/VBA/VBS - Programmation

Marsh Posté le 26-07-2010 à 08:39:32    

Bonjour,
 
Je travail actuellement sur un modè excel que je programme sous Microsoft Visual Basic pour Excel 2003.
 
Je crée une ListBox, appelée fmListBox, dans les Feuilles de mon fichier avec le code suivant.
 
[quote]
[b] Code [\]
Option Explicit
 
Private Sub Label1_Click()
 
End Sub
 
Private Sub lbOrientation_Click()
 
End Sub
 
Private Sub UserForm_Initialize()
  lbOrientation.AddItem "Arc de cercle à Droite"
  lbOrientation.AddItem "Arc de cercle à Gauche"
End Sub
[\quote]
 
Puis j'appelle ma fenêtre à s'ouvrir, dans une procédure d'un module du fichier, pour demander à la personne qui l'utilise  
 
quel type de profil elle utilise avec la commande:
 
[quote]
fmListBox.Show
[\quote]
 
Puis je veux récupérer la valeur qui a été sélectionner. Pour cela j'ai écrit à la suite dans la procédure le code suivant  
 
:
[quote]
[b] Code[\b]
Dim Orientation As String
    For i = 1 To fmListBox.ListCount
        If fmListBox.Selected(1) = True Then
            Orientation = fmListBox.List(1)
        Else
            Orientation = fmListBox.List(2)
        End If
    Next i
[\quote]
 
Le problème est qu'il me sort une erreure de compilation en me surlignant ListCount et en me disant Membre de méthode ou  
 
de données introuvable.
 
Quelqu'un saurait-il comment je epux faire pour récupérer la valeur qui est sélectionnée dans ma fmListBox, dnas ma  
 
procédure pour utiliser son résultat par la suite.
 
Merci d'avance de vos réponses.

Reply

Marsh Posté le 26-07-2010 à 08:39:32   

Reply

Marsh Posté le 26-07-2010 à 09:31:36    

Hello,
 
l'index des items d'une listbox commence à 0. de plus tu fais une boucle mais tu n'utilise pas la variable qui est incrementé.
 
Ca donnerait plutot :
 
Private Sub ListBox1_Click()
Dim Orientation As String  
    For i = 0 To fmListBox.ListCount -1
        If fmListBox.Selected(i) Then  
            Orientation = fmListBox.List(i)  
            Exit for
        End If  
    Next i
End Sub


Message édité par Arwon le 26-07-2010 à 09:32:13
Reply

Marsh Posté le 26-07-2010 à 10:48:32    

Merci,
J'ai donc mis ta fonction dans la procédure dans fmListBox dans Feuilles mais j'ai un problème c'est de savoir  comment je récupère la valeur de Orientation dans ma procédure coordScarf qui dans les Modules pour pouvoir l'utiliser.
Merci d'avance
 

Reply

Marsh Posté le 26-07-2010 à 13:19:31    

la tu as plusieurs solutions, ca dépend de quand tu as besoins d'appeler coordScarf
 
- le mieux c'est d'appeler ta fonction coordScarf dans l'evenement "click" de la listbox (la procédure que je t'ai donnée) et tu donnes Orientation en argument à coordScarf
 
- tu peux mettre la variable Orientation en public, c'est pas très conseillé mais si tu le fait, prend garde qu'aucune autre variable n'ait le même nom. pour faire cela, il faut déclarer ta variable en début de module, en dehors des procédures. enfin si t'as besoin d'utiliser ta variable a un moment différent du click dans la listbox, le plus simple est de faire comme ça.
 
ah oui la procédure que je t'ai donné, renomme la juste en "Private Sub fmListbox_Click()" sinon l'evenement ne va pas se déclencher. j'ai oublié de changer le nom désolé.

Reply

Sujets relatifs:

Leave a Replay

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