InputBox avec controle de la saisie et Compteur

Le
Alex
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilbert
Le #20781061
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" 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
FFO
Le #20781131
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 !!!!!!
Alex
Le #20783031
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
FFO
Le #20785381
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 !!!!!!
Gilbert
Le #20785681
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"
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
Publicité
Poster une réponse
Anonyme