Format textbox dans formulaire

pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006
- 6 mars 2006 à 15:49
cs_etniqs
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016
- 8 mars 2006 à 11:49
Bonjour
je viens de créer mon 1er usf :
j'ai un 1er textbox ou l'on doit saisir le nom et le prenom d'une personne ; les deux étant séparé d'un espace sans quoi j'ai un message d'erreur.
Quelqu'un peut -il me dire si je suis sur la bonne voie en écrivant ceci :
et quelle condition ajouter ?
If Usf1.Optionoui.Value = True Then
If Len(Usf1.TextBox1.Text) <> 0 & " " & 0 Then
MsgBox ("! Vous devez saisir le NOM puis le prénom du responsable de famille" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If
End If

D'autres part, j'ai ensuite 4 textbox les unes après les autres pour saisir un rib :
j'ai défini pour chacune les longueurs que l'on doit saisir :

If Usf1.Optionoui.Value = True Then
If Len(Usf1.TextBox6.Text) <> 5 Then
MsgBox ("! Vous devez saisir 5 caractères dans le champ BANQUE" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If
End If
J'aimerai qu'a la saisie, mon curseur passe directement d'une box à l'autre qd le nombre de chiffre max est atteint

est ce que qlq'un peut m'aider
merci d'avances

14 réponses

cs_Willi
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
22
6 mars 2006 à 16:06
Bonjour,
Si le nom et le prénom de la personne sont dans le meme textbox alors la 2ième lignes peut se simplifier comme suit:
If Len(Usf1.TextBox1.Text) <> 0 Then

Pour le changement de textbox définis la propriété MaxLength de celles-ci à 5.
Ensuite dans l'événement Change de tes 3 premières textbox tu va donner le focus à la textbox suivante comme suit:

Private Sub Text6_Change()
If Len(Text6.Text) = 5 Then Text7.SetFocus
End Sub

Private Sub Text7_Change()
If Len(Text7.Text) = 5 Then Text8.SetFocus
End Sub

et ainsi de suite...................
0
cs_DARKSIDIOUS
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
131
6 mars 2006 à 16:19
If Len(Usf1.TextBox1.Text) <> 0 & " " & 0 Then : cette ligne ne veut rien dire !!!

_

<spa></spa>
0
cs_etniqs
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016

6 mars 2006 à 16:30
Oui, enfin, s'il veut vérifier que le nom ET le prénom ont été inséré, il faut qu'il fasse du genre :

Dim txt() As String
txt = VBA.Split(Trim("coucou truc "), " ") ' y'a un espace entre les "


If UBound(txt) = 0 Then MsgBox "pasglop"

ie : si tu n'as que 1 truc (le plus grand index du tableau est 0) alors il manque qqchose (le nom OU le prenom)

coïto ergo sum
0
pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006

6 mars 2006 à 18:18
bonjour willy, darksidious et etniqs
merci de vos réponses
willy, tb pour faire suivre la saisie du rib
ca fonctionne super bien
pour la saisie du nom et prenom
j'ai laissr tomber pour l'instant

j'ai un souci, depuis que j'ai rajouter mes 2 boutons oui et non,
tout se passe bien dans la saisie des textbox
mais je n'arrive pas à valider pour saisir les données dans ma feuille excel
quelqu'un a t-il une solution ,???
voici ma macro :

Private Sub cmdvalider_Click()


If Len(Usf1.TextBox1.Text) <> 0 Then 'MsgBox ("! Vous devez saisir le NOM puis le prénom du responsable de famille" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If


If Usf1.TextBox1.Text = "" Then
MsgBox "Vous n'avez rien saisi ;" & Chr(10) & "Veuillez saisir le Nom et le prénom du responsable de la famille !"
Exit Sub
End If



If Usf1.Optionoui.Value = True Then
If Len(Usf1.TextBox6.Text) < 5 Then
MsgBox ("! Vous devez saisir 5 caractères dans le champ BANQUE" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If
End If


If Usf1.Optionoui.Value = True Then
If Len(Usf1.TextBox7.Text) < 5 Then
MsgBox ("! Vous devez saisir 5 caractères dans le champ GUICHET" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If
End If


If Usf1.Optionoui.Value = True Then
If Len(Usf1.TextBox8.Text) < 11 Then
MsgBox ("! Vous devez saisir 11 caractères dans le champ N° COMPTE" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If
End If


If Usf1.Optionoui.Value = True Then
If Len(Usf1.TextBox9.Text) < 2 Then
MsgBox ("! Vous devez saisir 2 caractères dans le champ CLE" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")
Exit Sub
End If
End If


suite:
ActiveCell.Value = Usf1.TextBox1.Text
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = Usf1.TextBox2.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf1.TextBox3.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf1.TextBox4.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf1.TextBox5.Text
ActiveCell.Offset(0, 6).Select
ActiveCell.Value = Usf1.TextBox6.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf1.TextBox7.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf1.TextBox8.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf1.TextBox9.Text
ActiveCell.Offset(0, 1).Select


Unload Me
'Calculate
Sheets("MENU").Activate
End Sub
0

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

Posez votre question
cs_etniqs
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016

6 mars 2006 à 18:37
A priori, comment veux-tu envoyer des données dans le "module" Feuil1, si t'as fonction est Private ....

coïto ergo sum
0
pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006

6 mars 2006 à 20:02
désolé mais c'est la première fois que je fais un formulaire
et je ne sais pas trop comment tous ça fonctionne :
private sub ??
module : justement dans mon fichier, j'ai une vingtaine de macro dans une dizaine de module --> pourquoi telle macro ds tel module : i don't know...

tous ce ne me dis pas la réponse au fait que ca ne fonctionne pas...
0
asecher
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007
1
6 mars 2006 à 20:45
Bon, si on reprend le code :

If Len(Usf1.TextBox1.Text) <> 0 Then 'MsgBox ("! Vous devez saisir le NOM puis le prénom du responsable de famille" & Chr(10) & "Veuillez vérifier et recommancer votre saisi !")

Ca veut dire que tu engueule l'utilisateur d'avoir saisi quelque chose (Len>0 ya du texte)

If Usf1.TextBox1.Text = "" Then
MsgBox "Vous n'avez rien saisi ;" & Chr(10) & "Veuillez saisir le Nom et le prénom du responsable de la famille !"
Exit Sub

s'il n'a rien saisi, tu l'enguelue encore (mais là, tu as raison....)

Pour le RIB, ça semble OK

après, je ne pige pas ce que tu eux faire, renvoyer les données vers ta feuille principale ?

Petit commentaire sur le message de etniqs : un module private peux renvoyer des infos vers un public.... (et pas le contraire)

Alain 31
0
pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006

6 mars 2006 à 20:51
merci bcp asecher
j'ai supprimer l'enguelade lorsque l'utilisateur rentre un texte et maintenant ça fonctionne.
En fait je cherchais une solution pour lui dire qu'il fallait 2 mots séparés par un espace
encore merci pour tes explications
pitchoune
0
pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006

6 mars 2006 à 20:51
merci bcp asecher
j'ai supprimer l'enguelade lorsque l'utilisateur rentre un texte et maintenant ça fonctionne.
En fait je cherchais une solution pour lui dire qu'il fallait 2 mots séparés par un espace
encore merci pour tes explications
pitchoune
0
asecher
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007
1
6 mars 2006 à 21:06
Pour savoir s'il y a deux mots, tu peux faire :
if Instr(Usf1.TextBox1.Text," ")<1 then
msgbox "ben, y a qu'un mot, là..."
end if
'on recherche la position d'un espace dans la chaîne

si l'appel est clôturé, il faut clicker quelque part (je ne sais pas trop où) pour que ton message soit en vert et que d'autres utilisateurs ne se creusent pas la tête....

A+

Alain 31
0
pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006

6 mars 2006 à 21:09
ok par contre j'ai une deuxième usf et m^me problème , les valeurs de mes liste ne s'affichent pas ds mon fichier :
Sub Comdvalider2_Click()


ActiveCell.Value = Usf2.ComboBox1.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf2.ComboBox2.Text
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf2.ComboBox3.Text
ActiveCell.Offset(0, 1).Select
Unload Me
End Sub

alors je ne pige vraiment pas pourquoi
est vous ???
0
asecher
Messages postés
262
Date d'inscription
lundi 20 octobre 2003
Statut
Membre
Dernière intervention
27 avril 2007
1
6 mars 2006 à 23:07
As-tu bien réactivé la feuille "destinantrice" ? De plus, n'as-tu pas inversé le sélect de ta cellule active (et oublier de changer de cellule) et son remplissage :
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf2.ComboBox1.Text
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Usf2.ComboBox2.Text
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = Usf2.ComboBox3.Text

Alain 31
0
pitchoune85
Messages postés
8
Date d'inscription
vendredi 24 février 2006
Statut
Membre
Dernière intervention
7 mars 2006

7 mars 2006 à 09:43
Ok ! en fait , ça venait de mon bouton valider
car qd je doublcliq dessus, j'avais mon 1er :
Private Sub Comdvalider2_Click()


ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Usf2.ComboBox1.Text
ActiveCell.Offset(0, 2).Select
ActiveCell.Value = Usf2.ComboBox2.Text
ActiveCell.Offset(0, 3).Select
ActiveCell.Value = Usf2.ComboBox3.Text
'ActiveCell.Offset(0, 1).Select


Unload Me
End Sub

et ça m'en remettait un en bas de page
Private Sub cmdvalider2_Click()
End Sub

j'ai donc recopier ma macro ds le second et ça marche
par contre je ne sais pas pourquoi
merci qd même
ah oui, il fallait bien que je laisse mes offset à (0, 1)
0
cs_etniqs
Messages postés
201
Date d'inscription
mardi 7 octobre 2003
Statut
Membre
Dernière intervention
10 mai 2016

8 mars 2006 à 11:49
Petit commentaire sur le message de etniqs : un module private peux renvoyer des infos vers un public.... (et pas le contraire)

Oui, je sais, je lève un pb que très peu de débutant (en programmation) sait, et puis je ne sais pas comment est foutu l'appel de son userform entre les listes et les renvois vers listbox :
si c'est du genre private -> private -> public : y'a un trou ...entre les 2 premiers private (si modules différents)

coïto ergo sum
0