Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

controle de choix dans une listbox

4 réponses
Avatar
Colasmar
Bonjour,
J'avance petit à petit dans mes applications et je me heute maintenant à la
nécessité de contrôler si l'utilisateur a bien sélectionner un nom dans une
liste.
Pour ce faite, ma macro appelle un Userform avec une listBox contenant des
noms et un bouton OK.
J'ai mis le code d'exécution dans le bouton OK parceque je n'arrive pas à
récupérer le choix dans la macro initiale qui lance la userForm qui en gros
ça affecte une cellule avec le nom choisit. Mais je ne sais pas comment
obliger à choisir un nom avant d'appuyer sur OK.
Il faudrait que le UserForm se réaffiche mais alors je fais une boucle dont
je n'arrive pas à me sortir.
Voilà, si vous avez une petite idée.
bon week end à tous.

4 réponses

Avatar
anonymousA
Bonjour,

je ne suis pas sur de tout comprendre à ta demanade mais je te
communique le code suivant à titre d'exemple. Ici le CommandButton1 est
le bouton de validation.
Si rien n'est cliqué dans le listbox alors, le msgbox ne s'affiche pas.
On suppose bien sur que le listbox est du type à selection unique sinon
il faudra utiliser la propriété selected plutot que value.
Cet exemple est à adpater à ta demande précise.

Private Sub CommandButton1_Click()

If Not IsNull(Me.ListBox1.Value) Then MsgBox Me.ListBox1.Value

End Sub

Private Sub UserForm_Initialize()

with Me.ListBox1
.AddItem "toto"
.AddItem "titi"
.AddItem "tata"
end with

End Sub

A+

Bonjour,
J'avance petit à petit dans mes applications et je me heute maintenant à la
nécessité de contrôler si l'utilisateur a bien sélectionner un nom dans une
liste.
Pour ce faite, ma macro appelle un Userform avec une listBox contenant des
noms et un bouton OK.
J'ai mis le code d'exécution dans le bouton OK parceque je n'arrive pas à
récupérer le choix dans la macro initiale qui lance la userForm qui en gros
ça affecte une cellule avec le nom choisit. Mais je ne sais pas comment
obliger à choisir un nom avant d'appuyer sur OK.
Il faudrait que le UserForm se réaffiche mais alors je fais une boucle dont
je n'arrive pas à me sortir.
Voilà, si vous avez une petite idée.
bon week end à tous.



Avatar
Hervé
Bonsoir,
Teste la valeur de la propriété "ListIndex" de ta ListBox, si il est égal
à -1 aucun item n'a été cliqué :
Private Sub Cmd_OK_Click()
If ListBox1.ListIndex = -1 Then
MsgBox "Vous devez faire un choix dans la liste !"
Exit Sub 'sort de la proc...
End If
'ici le code si un nom a été choisi...
'...
End Sub

Pour utiliser dans ta Form une valeur définie dans une proc (en l'occurrence
ta proc appelante) se trouvant dans un module quelconque (module standard,
module de feuille, ou bien module du classeur), utilise une variable
publique que tu peux mettre dans un module standard si tu en as déjà créé
un, ou alors, dans un module de feuille ou encore dans celui du classeur,
mais pour ces derniers, il te faut y faire référence du style
"Feuil1.MaVariable" ou "ThisWorkbook.MaVariable" :

Public MaVariable 'as >>>type que tu veux ! (elle doit impérativement être
déclarée publique dans un module de feuille ou celui du classeur pour être
visible)
et dans l'évennement Click de ta ListBox :

MaVariable = ListBox1.Text
Feuil1.MaVariable = ListBox1.Text
ThisWorkbook.MaVariable = ListBox1.Text
ou bien le contraire
Si la valeur doit être récupérée dans une cellule, alors :
Worksheets("Feuil1").[A1] = ListBox1.Text

Hervé.

"Colasmar" a écrit dans le message de
news:
Bonjour,
J'avance petit à petit dans mes applications et je me heute maintenant à
la
nécessité de contrôler si l'utilisateur a bien sélectionner un nom dans
une
liste.
Pour ce faite, ma macro appelle un Userform avec une listBox contenant des
noms et un bouton OK.
J'ai mis le code d'exécution dans le bouton OK parceque je n'arrive pas à
récupérer le choix dans la macro initiale qui lance la userForm qui en
gros
ça affecte une cellule avec le nom choisit. Mais je ne sais pas comment
obliger à choisir un nom avant d'appuyer sur OK.
Il faudrait que le UserForm se réaffiche mais alors je fais une boucle
dont
je n'arrive pas à me sortir.
Voilà, si vous avez une petite idée.
bon week end à tous.



Avatar
Colasmar
Bonjour,
tout d'abord merci de ton aide.
Malheureusement je ne crois pas que ta proposition réponde à mon besoin. Mon
problème est d'obligé l'utilisateur à faire une sélection et pas seulement de
vérifier s'il l'a fait.
Ma macro donne cela :

'Exécution d'une première partie
.....
'appel d'un UserForm
If NewInsert.Offset(0, 7).Interior.color = 65280 Then
UserForm1.Show

'Le userForm contient une listBox avec des noms de personnes
'et un bouton OK

'en cliquant sur le bouton OK, appel d'une Sous-procédure
Private Sub OK_Click()

'insère le nom de l'intervenant dans la cellule ActiveCell.Offset(-1,
15) = NomInterv
Unload Me
End Sub
'suite de l'exécution de la macro appellante
Else
End If

Donc tout cela fonctionne très bien sauf que si l'utilisateur ne sélectionne
rien dans la liste je ne sais pas comment l'obliger à le faire...

Voilà j'espère que c'est un peu plus clair.
Colasmar



Bonjour,

je ne suis pas sur de tout comprendre à ta demanade mais je te
communique le code suivant à titre d'exemple. Ici le CommandButton1 est
le bouton de validation.
Si rien n'est cliqué dans le listbox alors, le msgbox ne s'affiche pas.
On suppose bien sur que le listbox est du type à selection unique sinon
il faudra utiliser la propriété selected plutot que value.
Cet exemple est à adpater à ta demande précise.

Private Sub CommandButton1_Click()

If Not IsNull(Me.ListBox1.Value) Then MsgBox Me.ListBox1.Value

End Sub

Private Sub UserForm_Initialize()

with Me.ListBox1
.AddItem "toto"
.AddItem "titi"
.AddItem "tata"
end with

End Sub

A+

Bonjour,
J'avance petit à petit dans mes applications et je me heute maintenant à la
nécessité de contrôler si l'utilisateur a bien sélectionner un nom dans une
liste.
Pour ce faite, ma macro appelle un Userform avec une listBox contenant des
noms et un bouton OK.
J'ai mis le code d'exécution dans le bouton OK parceque je n'arrive pas à
récupérer le choix dans la macro initiale qui lance la userForm qui en gros
ça affecte une cellule avec le nom choisit. Mais je ne sais pas comment
obliger à choisir un nom avant d'appuyer sur OK.
Il faudrait que le UserForm se réaffiche mais alors je fais une boucle dont
je n'arrive pas à me sortir.
Voilà, si vous avez une petite idée.
bon week end à tous.






Avatar
Colasmar
Comme toujours si je réflechissais un peu plus...
J'avais pas pensé au Exit Sub et du coup je bouclais...
Merci beaucoup Hervé.
Bon Week end


Bonsoir,
Teste la valeur de la propriété "ListIndex" de ta ListBox, si il est égal
à -1 aucun item n'a été cliqué :
Private Sub Cmd_OK_Click()
If ListBox1.ListIndex = -1 Then
MsgBox "Vous devez faire un choix dans la liste !"
Exit Sub 'sort de la proc...
End If
'ici le code si un nom a été choisi...
'...
End Sub

Pour utiliser dans ta Form une valeur définie dans une proc (en l'occurrence
ta proc appelante) se trouvant dans un module quelconque (module standard,
module de feuille, ou bien module du classeur), utilise une variable
publique que tu peux mettre dans un module standard si tu en as déjà créé
un, ou alors, dans un module de feuille ou encore dans celui du classeur,
mais pour ces derniers, il te faut y faire référence du style
"Feuil1.MaVariable" ou "ThisWorkbook.MaVariable" :

Public MaVariable 'as >>>type que tu veux ! (elle doit impérativement être
déclarée publique dans un module de feuille ou celui du classeur pour être
visible)
et dans l'évennement Click de ta ListBox :

MaVariable = ListBox1.Text
Feuil1.MaVariable = ListBox1.Text
ThisWorkbook.MaVariable = ListBox1.Text
ou bien le contraire
Si la valeur doit être récupérée dans une cellule, alors :
Worksheets("Feuil1").[A1] = ListBox1.Text

Hervé.

"Colasmar" a écrit dans le message de
news:
Bonjour,
J'avance petit à petit dans mes applications et je me heute maintenant à
la
nécessité de contrôler si l'utilisateur a bien sélectionner un nom dans
une
liste.
Pour ce faite, ma macro appelle un Userform avec une listBox contenant des
noms et un bouton OK.
J'ai mis le code d'exécution dans le bouton OK parceque je n'arrive pas à
récupérer le choix dans la macro initiale qui lance la userForm qui en
gros
ça affecte une cellule avec le nom choisit. Mais je ne sais pas comment
obliger à choisir un nom avant d'appuyer sur OK.
Il faudrait que le UserForm se réaffiche mais alors je fais une boucle
dont
je n'arrive pas à me sortir.
Voilà, si vous avez une petite idée.
bon week end à tous.