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

Comment contrôler si la sélection d'une listbox est vide???...

3 réponses
Avatar
Christophe B.
Bonjour,

Voilà, faisons au plus simple...
J'ai une listbox dans un userform. Après avoir cliqué OK j'arrive à afficher
la sélection dans une boite de dialogue. Mais comment prévenir si rien n'a
été sélectionné??? Comment revenir au userform quand la sélection est vide et
afficher un msg du type "Vous devez sélectionner qqch"?

3 réponses

Avatar
Albator V
Private Sub Ok_Click()

If IsNull(ListBox1.Value) = True Then MsgBox "Vous devez
sélectionner qqch"

end sub

-----Message d'origine-----
Bonjour,

Voilà , faisons au plus simple...
J'ai une listbox dans un userform. Après avoir cliqué
OK j'arrive à afficher

la sélection dans une boite de dialogue. Mais comment
prévenir si rien n'a

été sélectionné??? Comment revenir au userform quand
la sélection est vide et

afficher un msg du type "Vous devez sélectionner qqch"?
.



Avatar
Daniel
Bonjour :
strSelection=ListBox1.Value
If strSelection="" then ....
A adapter suivant le cas
Cordialement.
Daniel
"Christophe B." <Christophe a écrit dans le
message de news:
Bonjour,

Voilà, faisons au plus simple...
J'ai une listbox dans un userform. Après avoir cliqué OK j'arrive à
afficher
la sélection dans une boite de dialogue. Mais comment prévenir si rien n'a
été sélectionné??? Comment revenir au userform quand la sélection est vide
et
afficher un msg du type "Vous devez sélectionner qqch"?


Avatar
Michel Gaboly
Bonjour,

Si ta ListBox n'accepe qu'une seule sélection (situation par défaut), la
propriété ListIndex renvoie -1 si rien n'est sélectionné, et le numéro
de ligne sélectionnée - 1 sinon (0, pour le 1er élément, 1 pour le
deuxième, ...).

Il faut donc tester si ListIndex est à - 1.

Confronté à ce genre de truc depuis longtemps, j'ai développé
(initialement avec l'ancien langage macro !) une fonction "Controle",
qui permet d'effectuer ce genre de test, d'afficher un message passé
comme argument et éventuellement (pour les TextBox par exemple) de
placer le curseur à l'endroit où un problème a été détecté.

La fonction Controle est commentée en détail ici :

http://www.gaboly.com/VBA/FonctionControle.html


Le fonctionnement est le suivant (BOK étant le nom du bouton "OK",
LInfos celui du ListBox, qui par hypothèse permet de choisir une ville,
et TNom un TextBox permettant d'entrer un nom) :

Private Sub BOK_Click()
ControleSaisie
If Resultat Then
ReportDonnees
Unload Me
End If
End Sub

Private Sub ControleSaisie()
Resultat = Controle(LInfos.ListIndex = -1, "la ville.")
' Controle des autres éléments éventuels
' If Resultat Then Resultat = Controle(TNom = "", "le nom", TNom)
' If Resultat Then Resultat = Controle(...
End Sub

Private Sub ReportDonnees()
' Ton traitement
End Sub


Voici le code de la fonction :

Dans un module Standard (NB ne pas oublier de declarer Resultat comme
Public) :

Option Explicit
Public Resultat As Boolean

Function Controle(ByVal Expression As Boolean, Optional ComplTexte,
Optional CellActive, Optional TexteMessage, Optional VideoInverse As
Boolean, Optional ControleUnique)
If Not IsMissing(ControleUnique) Then
If ControleUnique Then
Exit Function
End If
End If
' Test si anomalie
If Expression Then
If IsMissing(TexteMessage) Then
TexteMessage = "Vous n'avez pas indiqué " & ComplTexte
End If
MsgBox TexteMessage, 48, "Information manquante ou anormale."
' MAJ Curseur
If Not IsMissing(CellActive) Then
CellActive.SetFocus
End If
End If
' Sélection de l'info à modifier
If VideoInverse And Not IsMissing(CellActive) Then
CellActive.SelStart = 0
CellActive.SelLength = Len(CellActive)
End If
' MAJ Contrôle déjà effectué
If Not IsMissing(ControleUnique) And Not Expression Then
ControleUnique = True
End If
' Résultat du contrôle
If Expression Then Controle = False Else Controle = True
End Function


NB - En cas de sélection multiple possible, il faut faire une boucle
avec la propriété Selected(i), et adapter le test.


Bonjour,

Voilà, faisons au plus simple...
J'ai une listbox dans un userform. Après avoir cliqué OK j'arrive à afficher
la sélection dans une boite de dialogue. Mais comment prévenir si rien n'a
été sélectionné??? Comment revenir au userform quand la sélection est vide et
afficher un msg du type "Vous devez sélectionner qqch"?



--
Cordialement,

Michel Gaboly
www.gaboly.com