OVH Cloud OVH Cloud

Erreur de saisie dans textbox

7 réponses
Avatar
Isabelle
Bonjour

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir un contrôle se saisie commun, de manière à ce que quand l'utilisateur clique sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message s'affiche disant : "Il y a des données manquantes"
Voici le code utilisé à présent
If TextBox1 = "" The
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly, "Attention"
End I
If TextBox2 = "" The
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly, "Attention"
End I
If TextBox3 = "" The
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly, "Attention"
End I
....
note_qual.Hid
End Su

Dans ce cas, le message s'affiche autant de fois que le nombre de textbox vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou plusieurs textbox ne sont pas conformes

Auriez-vous une solution?
Merci par avance
Isabelle

7 réponses

Avatar
papou
Bonjour Isabelle
For Each ctr in Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
If ctr.Value ="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
End If
End If
Next ctr

Cordialement
Pascal

"Isabelle" a écrit dans le message de
news:
Bonjour,

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir un
contrôle se saisie commun, de manière à ce que quand l'utilisateur clique

sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message
s'affiche disant : "Il y a des données manquantes".
Voici le code utilisé à présent:
If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
.....
note_qual.Hide
End Sub

Dans ce cas, le message s'affiche autant de fois que le nombre de textbox
vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou

plusieurs textbox ne sont pas conformes.

Auriez-vous une solution??
Merci par avance!
Isabelle


Avatar
Michel Pierron
Bonjour papou;
Tu as oublié la sortie de boucle; sinon, c'est comme avant.
For Each ctr in Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
If ctr.Value ="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
Exit Sub
End If
End If
Next ctr

MP

"papou" a écrit dans le message de
news:
Bonjour Isabelle
For Each ctr in Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
If ctr.Value ="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
End If
End If
Next ctr

Cordialement
Pascal

"Isabelle" a écrit dans le message de
news:
Bonjour,

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir un
contrôle se saisie commun, de manière à ce que quand l'utilisateur clique

sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message
s'affiche disant : "Il y a des données manquantes".
Voici le code utilisé à présent:
If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
.....
note_qual.Hide
End Sub

Dans ce cas, le message s'affiche autant de fois que le nombre de textbox
vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou

plusieurs textbox ne sont pas conformes.

Auriez-vous une solution??
Merci par avance!
Isabelle






Avatar
papou
Oui exact !
;-)

Cordialement
Pascal

"Michel Pierron" a écrit dans le message de
news:
Bonjour papou;
Tu as oublié la sortie de boucle; sinon, c'est comme avant.
For Each ctr in Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
If ctr.Value ="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
Exit Sub
End If
End If
Next ctr

MP

"papou" a écrit dans le message de
news:
Bonjour Isabelle
For Each ctr in Me.Controls
If TypeOf ctr Is MSForms.TextBox Then
If ctr.Value ="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
End If
End If
Next ctr

Cordialement
Pascal

"Isabelle" a écrit dans le message
de


news:
Bonjour,

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir
un



contrôle se saisie commun, de manière à ce que quand l'utilisateur
clique


sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message
s'affiche disant : "Il y a des données manquantes".
Voici le code utilisé à présent:
If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
.....
note_qual.Hide
End Sub

Dans ce cas, le message s'affiche autant de fois que le nombre de
textbox



vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou
plusieurs textbox ne sont pas conformes.

Auriez-vous une solution??
Merci par avance!
Isabelle










Avatar
docm
Bonjour isabelle.
Je crois que tu cherches la commande ELSE
comme dans ce qui suit:

If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")
ElseIf TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")
ElseIf TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")
Else
'Aucun problème
End If

Amicalement.

"Isabelle" wrote in message
news:
Bonjour,

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir un
contrôle se saisie commun, de manière à ce que quand l'utilisateur clique

sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message
s'affiche disant : "Il y a des données manquantes".
Voici le code utilisé à présent:
If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
.....
note_qual.Hide
End Sub

Dans ce cas, le message s'affiche autant de fois que le nombre de textbox
vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou

plusieurs textbox ne sont pas conformes.

Auriez-vous une solution??
Merci par avance!
Isabelle


Avatar
Isabelle
Je vous remercie tous!!
A bientot!
Avatar
Loulou Fox
Puisque je viens de buter sur a peu près le même problème, voilà une autre
solution :

For i=1 to 20
If Trim(Me.Controls("Textbox" & i).value)="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
End If
Next i

L'avantage par rapport à la solution de papou c'est que tu contrôle vraiment
les textbox qu'il faut remplir (on peut imaginer qu'après 20 il y a des
texbox qui peuvent reter vides...
Le petit plus, c'est la fonction Trim() qui te permet de supprimer les
espaces en début et fin de chaine, ce qui t'évite d'avoir une chaine
composée uniquement d'espaces.

Loulou


"Isabelle" a écrit dans le message de
news:
Bonjour,

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir un
contrôle se saisie commun, de manière à ce que quand l'utilisateur clique

sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message
s'affiche disant : "Il y a des données manquantes".
Voici le code utilisé à présent:
If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
If TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,
"Attention")

End If
.....
note_qual.Hide
End Sub

Dans ce cas, le message s'affiche autant de fois que le nombre de textbox
vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou

plusieurs textbox ne sont pas conformes.

Auriez-vous une solution??
Merci par avance!
Isabelle


Avatar
Gloops
Bonjour,

Alors si j'ai bien suivi, la question était qu'on ne voulait le message
qu'une fois.

Ceci est une troisième syntaxe pour avoir un message par zone de texte
vide. On peut corriger le problème de la même manière qu'avec la
deuxième syntaxe.

Voilà. Maintenant, on a l'embarras du choix, ça fait trois manières de
régler le problème, ou de faire pareil qu'avant.
_________________________________________
Loulou Fox a écrit, le 27/05/2004 14:51 :

Puisque je viens de buter sur a peu près le même problème, voilà une autre
solution :

For i=1 to 20
If Trim(Me.Controls("Textbox" & i).value)="" Then
Msgbox "Au moins une zone de texte n'a pas été renseignée"
End If
Next i

L'avantage par rapport à la solution de papou c'est que tu contrôle vraiment
les textbox qu'il faut remplir (on peut imaginer qu'après 20 il y a des
texbox qui peuvent reter vides...
Le petit plus, c'est la fonction Trim() qui te permet de supprimer les
espaces en début et fin de chaine, ce qui t'évite d'avoir une chaine
composée uniquement d'espaces.

Loulou


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

Bonjour,

J'ai un userform où il y a 20 textbox à remplir. Je souhaite établir un


contrôle se saisie commun, de manière à ce que quand l'utilisateur clique
sur le bouton OK et qu'une ou plusieurs texbox sont vides, un message
s'affiche disant : "Il y a des données manquantes".

Voici le code utilisé à présent:
If TextBox1 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,


"Attention")

End If
If TextBox2 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,


"Attention")

End If
If TextBox3 = "" Then
Message = MsgBox("Vous devez saisir TOUTES les notes!", vbOKOnly,


"Attention")

End If
.....
note_qual.Hide
End Sub

Dans ce cas, le message s'affiche autant de fois que le nombre de textbox


vides. J'aimerai qu'il se s'affiche qu'une seule fois, lorsque une ou
plusieurs textbox ne sont pas conformes.

Auriez-vous une solution??
Merci par avance!
Isabelle