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

InputBox avec controle de la saisie et Compteur

5 réponses
Avatar
Alex
Bonjour =E0 tous,

Je tente de faire un contr=F4le sur une inputbox avec un compteur :
J'ai =E9crit ceci, (dernier test avant envoie) :

Dim Q5 As String
Dim compteur As Integer
compteur =3D 0
Q5 =3D InputBox("Veuillez saisir Tata, Toto, Titi ou Tutu , SVP",
"Demande d'information")
Do While compteur < 3
If Q5 <> "Tata" Or Q5 <> "Titi" or Q5 <> "Toto" or Q5<>
"Tutu" Then
MsgBox "Veuillez saisir Tata, Toto, Titi ou Tutu , SVP" &
Chr(13) & "Seuls Tata, Toto, Titi ou Tutu sont autoris=E9s pour cette
zone =E0 compl=E9ter", vbExclamation, "Demande d'information"
Q5 =3D InputBox("Veuillez saisir Tata, Toto, Titi ou Tutu ,
SVP", "Demande d'information")
compteur =3D compteur + 1
End If
Loop
Exit Sub

Je rencontre plusieurs probl=E8mes :
Ma liste de conditions est beaucoup plus longue, et avec des Noms de
personne. Est ce que les Or sont limitatif ?
Mes lignes de commandes correspondent elles bien =E0 ce que je veux
faire ?
car au cours de mes divers test et modification de commande je
rencontre, soit une sortie de la macro (exit sub), soit l'inscription
d'une donn=E9e non d=E9sir=E9e.
Merci par avance de vos suggestions.
Cordialement.
Alex

5 réponses

Avatar
Gilbert
Bonjour,

Si tu veux ne pouvoir saisir que Tata, Titi, Toto ou Tutu, tu dois utiliser
des AND :
Q5 <> "Tata" AND Q5 <> "Titi" AND Q5 <> "Toto" AND Q5<> "Tutu" Then

Avec des OR tu remplis toujours trois des conditions.
Si tu saisis Tata, tu remplis les conditions <> "Titi", <> "Toto", <> "Tutu"

--
Cordialement,

Gilbert


"Alex" a écrit dans le message de
news:
Bonjour à tous,

Je tente de faire un contrôle sur une inputbox avec un compteur :
J'ai écrit ceci, (dernier test avant envoie) :

Dim Q5 As String
Dim compteur As Integer
compteur = 0
Q5 = InputBox("Veuillez saisir Tata, Toto, Titi ou Tutu , SVP",
"Demande d'information")
Do While compteur < 3
If Q5 <> "Tata" Or Q5 <> "Titi" or Q5 <> "Toto" or Q5<>
"Tutu" Then
MsgBox "Veuillez saisir Tata, Toto, Titi ou Tutu , SVP" &
Chr(13) & "Seuls Tata, Toto, Titi ou Tutu sont autorisés pour cette
zone à compléter", vbExclamation, "Demande d'information"
Q5 = InputBox("Veuillez saisir Tata, Toto, Titi ou Tutu ,
SVP", "Demande d'information")
compteur = compteur + 1
End If
Loop
Exit Sub

Je rencontre plusieurs problèmes :
Ma liste de conditions est beaucoup plus longue, et avec des Noms de
personne. Est ce que les Or sont limitatif ?
Mes lignes de commandes correspondent elles bien à ce que je veux
faire ?
car au cours de mes divers test et modification de commande je
rencontre, soit une sortie de la macro (exit sub), soit l'inscription
d'une donnée non désirée.
Merci par avance de vos suggestions.
Cordialement.
Alex
Avatar
FFO
Salut à toi

Tu peux mettre comme ceci :

Liste = "Toto,Tata,Titi,Tutu"
Valide = 0
For i = 0 To UBound(Split(Liste, ","))
If Split(Liste, ",")(i) = Q5 Then
Valide = 1
Exit For
End If
Next
If Valide = 0 Then

Ce qui donne au final :

Dim Q5 As String
Dim compteur As Integer
compteur = 0
Liste = "Toto,Tata,Titi,Tutu"
Q5 = InputBox("Veuillez saisir " & Liste & " , SVP",
"Demande d'information")
Valide = 0
Do While compteur < 3
For i = 0 To UBound(Split(Liste, ","))
If Split(Liste, ",")(i) = Q5 Then
Valide = 1
Exit For
End If
Next
If Valide = 0 Then
MsgBox "Veuillez saisir " & Liste & " , SVP" &
Chr(13) & "Seuls " & Liste & " sont autorisés pour cette
zone à compléter", vbExclamation, "Demande d'information"
Q5 = InputBox("Veuillez saisir " & Liste & " ,
SVP", "Demande d'information")
compteur = compteur + 1
End If

Tu n'as plus qu'à actualiser la variable 'Liste' des données à saisir en
tête de code

Peut être du mieux pour toi

Dis moi !!!!!!
Avatar
Alex
Merci Gilbert et merci FFO pour vos réponses.
J'ai testé pour le moment qu'avec la solution de Gilbert, mais je
testerai aussi la tienne, FFO, et te dirait si c'est mieux surtout que
ma liste est plus grande que titi tutu toto tata...
Donc l'explication et le remplacement du Or en End est tout a fait
fructueuse.
Mais un nouveau souci apparait dans ma boucle qui tourne dans le vide
et ne se passe rien même si bon texte avec titi tata... :

Les lignes corrigés :

Dim Q5 As String
Dim compteur As Integer
compteur = 0
Q5 = InputBox("Veuillez saisir Tata, Toto, Titi ou Tutu , SVP",
"Demande d'information")
Do While compteur <= 3
If Q5 <> "Tata" And Q5 <> "Titi" And Q5 <> "Toto" And Q5 <>
"Tutu" Then
MsgBox "Veuillez saisir Tata, Toto, Titi ou Tutu , SVP" &
_
Chr(13) & "Seuls Tata, Toto, Titi ou Tutu sont autorisés
pour cette " _
& "zone à compléter", vbExclamation, "Demande
d'information"
Q5 = InputBox("Veuillez saisir Tata, Toto, Titi ou
Tutu ,SVP", "Demande d'information")
compteur = compteur + 1
Loop
Else
Exit Sub
Q5 = Cells(i, 2).Value
End If

J'ai comme message d'erreur : Erreur de compilation: Loop sans Do
alors que j'ai mon Do
Quelqu'un aurait il une idée.
Merci d'avance de votre aide.
Alex
Avatar
FFO
Rebonjour à toi

Change la disposition de ces lignes :

Else
Exit Sub
Q5 = Cells(i, 2).Value
End If

ainsi :

Else
Q5 = Cells(i, 2).Value
Exit Sub
End If

Celà devrait mieux convenir

Dis moi !!!!!!
Avatar
Gilbert
Bonjour,
C'est normal, ta boucle Do est imbriquée dans le If.
Tu evrais avoir quelque chose comme
Do
If
Else
Endif
Loop

ou bien
If
Do
Loop
Else
Do
Loop
Endif

Cordialement,
Gilbert

"Alex" a écrit dans le message de news:

Merci Gilbert et merci FFO pour vos réponses.
J'ai testé pour le moment qu'avec la solution de Gilbert, mais je
testerai aussi la tienne, FFO, et te dirait si c'est mieux surtout que
ma liste est plus grande que titi tutu toto tata...
Donc l'explication et le remplacement du Or en End est tout a fait
fructueuse.
Mais un nouveau souci apparait dans ma boucle qui tourne dans le vide
et ne se passe rien même si bon texte avec titi tata... :

Les lignes corrigés :

Dim Q5 As String
Dim compteur As Integer
compteur = 0
Q5 = InputBox("Veuillez saisir Tata, Toto, Titi ou Tutu , SVP",
"Demande d'information")
Do While compteur <= 3
If Q5 <> "Tata" And Q5 <> "Titi" And Q5 <> "Toto" And Q5 <>
"Tutu" Then
MsgBox "Veuillez saisir Tata, Toto, Titi ou Tutu , SVP" &
_
Chr(13) & "Seuls Tata, Toto, Titi ou Tutu sont autorisés
pour cette " _
& "zone à compléter", vbExclamation, "Demande
d'information"
Q5 = InputBox("Veuillez saisir Tata, Toto, Titi ou
Tutu ,SVP", "Demande d'information")
compteur = compteur + 1
Loop
Else
Exit Sub
Q5 = Cells(i, 2).Value
End If

J'ai comme message d'erreur : Erreur de compilation: Loop sans Do
alors que j'ai mon Do
Quelqu'un aurait il une idée.
Merci d'avance de votre aide.
Alex