Obliger la selection d'une listbox

Résolu
cs_henrry2 Messages postés 14 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 9 mai 2008 à 22:11
cs_henrry2 Messages postés 14 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 26 mai 2010 - 12 mai 2008 à 13:39
retraité, je profite de mes temps libres pour titiller excell etVB mais sans experience cela n'est pas facile.

7 réponses

cs_henrry2 Messages postés 14 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 26 mai 2010
9 mai 2008 à 22:24
Bonjour, mon pB est le suivant, j'ai une userform avec plusieurs textbox une listbox et un CommandButton qui actionne une macro.
comment faire pour que si l'utilisateur oublie de selectionner la listbox ou écrire dans une textbox de mettre la macro en veille tant que la sélection n'est pas faite et bien sur une fois la sélection effectuée re lancer la macro
merci
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
9 mai 2008 à 23:08
Au début de ta procédure (ou macro), tu dois vérifier l'état de la listbox.
If MaListbox.ListIndex = - 1 then Exit sub

Si ListIndex = -1, c'est qu'aucun item n'est sélectionné et tu sors de la procédure.
Bien sûr, tu peux mettre un MsgBox explicatif, au besoin...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
9 mai 2008 à 23:12
Salut,

voilà ce que je te propose, tu as besoin d'un Listbox et 2 zones de saisie(un textbox indéxé)

Option Explicit
Dim SVar As String




Private Sub Command1_Click()


' Variables de travail
 Dim i As Integer
 
' Vérifie que toutes les zones soit remplies(TextBox indéxés)
For i = 0 To 1
    If Text1(i).Text = vbNullString Then
       MsgBox "Vous devez remplir toutes les zones de text !"
       Exit Sub
    End If
Next i


' Vérifie que l'user à bien choisi un item dans List1
 If SVar = vbNullString Then
    MsgBox "Vous devez séléctionnez un élément dans la List1 !"
    Exit Sub
 End If
 
End Sub




Private Sub Form_Load()


' Variables de travail
 Dim i As Integer


' Remplie la List1
  For i = 0 To 10
      List1.AddItem "toto"
   Next i
  
End Sub


Private Sub List1_Click()


SVar = List1.Text


End Sub

Note : On peux faire une sub, mais disont que là c'est simple pour comprendre


A+
Exploreur

 Linux a un noyau, Windows un pépin
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
10 mai 2008 à 21:41
salut,

Exploreur -> pas d'index en VBA voyons ;)

henrry2 -> à retenir le fonctionnement qu'MPi a indiqué, à savoir on attend pas en boucle que l'utilisateur agisse, on travaille QUAND il a fait le nécessaire!

PS : attention à la rubrique du forum
<li> Vous êtes ici : [infomsg.aspx Thèmes] / [infomsgf_VISUAL-BASIC_1.aspx Visual Basic 6] / [infomsgt_DIVERS_220.aspx Divers] / [infomsgt_DEBUTANTS_226.aspx Débutants] / obliger la selection d'une listbox</li>topic déplacé de VB6 vers VBA

Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_henrry2 Messages postés 14 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 26 mai 2010
11 mai 2008 à 02:21
Merci pour toutes vos réponses qui sont en fait semblables.
Mais n'y a-t'il pas une solution qui permettrait de garder la macro en attente de la réponse aprés le message: "Vous devez séléctionnez un élément dans la List1!".
J'ai essayé waitTime mais pendant le réroulement de waitTime il n'est pas possible de sélectionner dans la listbox.
Enfin ceci pour essayer autre chose car vos solutions vont trés bien.
encore merci.
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
11 mai 2008 à 02:36
c'est ici un problème de conception!
pose un bouton sur une form, tu ne vas pas boucler et bouffer les ressources du proc jusqu'à ce que l'utilisateur clique, tu ne fais rien et agit quand il clique !

si tu as autre chose en tête alors explique précisément ta question même si elle n'est pas liée à ce problème car tu pars sur une mauvaise piste...

VBA est évènementiel, pas procédural....
des solutions pour bidouiller il y en a, y'a même que çà.
indice :  boolean + doevents
super, çà n'apporte rien
c'est ici un problème de conception!
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
cs_henrry2 Messages postés 14 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 26 mai 2010
12 mai 2008 à 13:39
J'ai bien compris le Pb. Je vais donc en rester là
encore une fois merci à tous
0