Condition pour champs formulaire
Bonsoir,
Je ne suis pas certaine du code vba afin d'ajouter une condition. Je suis novice dans ce domaine et je développe ce champ d'expertise que j'aime beaucoup.
J'aimerais ajouter une condition dans le cas où je désire, dans mon formulaire, que le nom et le prénom indiqué soit séparée par une virgule sans quoi le champ de mon formulaire demeurera vide. J'ai le code pour une autre textbox à numéro, le voici :
'avertisement 12 caractères dans la textbox6
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox6.Value) < 12 Then
Cancel = True
MsgBox "12 caratères obligatoires, 4 lettres et 8 chiffres"
End If
End SubMa textbox (nomprenom)
Code (nomprenom)
Cancel = true
Msg box :
Je ne suis vraiment pas certaine de ce que j'avance.
Merci pour votre aide !
Bonsoir Anniem,
Vous pouvez tester si une virgule existe dans le TextBox
If Instr(1,Me.TextBoxNom, ",") = 0 then
MsgBox "Le NOM et prénom doivent être séparés par une virgule"
Me.TextBoxNom.Value = ""
End IfA+
Bonsoir BrunoM45,
Private Sub nomprenom_Change () est la bonne formule? Le msgbox s'inscrit dans mon champ alors que j'ai indiqué seulement la première lettre. Il ne me donne pas l'opportunité d'inscrire le nom en entier. Est-ce qu'un ReturnBoolean serait plus approprié ?
Private Sub nomprenom_Change()
If InStr(1, Me.nomprenom, ",") = 0 Then
MsgBox "Le nom et prénom doivent être séparé par une virgule"
Me.nomprenom.Value = ""
End If
End SubMerci !
Re,
"nomprenom_Change" n'est pas une formule
Il faut mettre le code dans l'évènement AfterUpdate mais avec une petite subtilité
' A mettre au tout début
Dim FlgExit As Boolean
Private Sub nomprenom_AfterUpdate()
' tester si pas déjà passé ici
If FlgExit Then FlgExit = False: Exit Sub
' S'il n'existe pas de virgule dans le champ
If InStr(1, Me.nomprenom, ",") = 0 Then
' Mettre le flag de sortie à vrai
FlgExit = True
MsgBox "Le nom et prénom doivent être séparé par une virgule"
' Modifier le champ ce qui relance AfterUpdate
Me.nomprenom.Value = ""
End If
End SubA+
Toute cette précision m'apprend beaucoup.
Merci beaucoup !
Bonne soirée
Bonjour BrunoM45,
Je ne sais pas si tu es disponible ce jour mais j'ai encore un questionnement. J'ai tenté d'ajouter une autre condition dans mon formulaire afin que le nom et prénom de l'intervenant sois inscrit avec un espace ainsi qu'un numéro de pratique comme tel : Di Pietro, Françoise 55214.
J'ai débuté le code ainsi :
Private Sub IntPivot as String()
Dim i As Long
For i = 1 To Len(Str)
AddSpace = AddSpace & Mid(Stf, i, 1) & " "
Next i
AddSpace = Trim(AddSpace)
End If
End Sub J'ai tenté d'y inscrire le nom sans espace et cela fonctionne. Cependant cela ne devrait pas se faire. Du coup j'essaie d'ajouter la condition afin d'ajouter un code mais en vain.Serais-tu en mesure de me dire ce que j'ai fait d'incorrect ? Ou encore ce qu'il me manque ?
Merci !
Bonsoir anniem,
Je suis désolé, mais là c'est du charabiât pour moi
Dans votre code vous parlez de "Len(Str)" et de "Mid(Stf" mais ces variable ne sont définit nulle part
Il serait bien de déposer un fichier anonymisé
A+
Bonsoir BrunoM45,
Oui effectivement cela peut porter à confusion. Je n'ai pas de données confidentielles dans le document. Aucun nominatif alors je le joint au présent message.
Pour le champ IntPivot dans le formulaire, j'ai besoin de mettre deux conditions. Une première condition, prénom et nom avec espace et numéro d'enregistrement comme tel : Francoise DiPietro 55124. Il serait important, dans mes critères d'inscription pour les textbox nomprenom et IntPivot qu'aucun autre caractères ne puissent être saisis mise à part les lettres de l'alphabet ainsi que des chiffres pour la textbox IntPivot. Je ne sais pas si je dis est du charabiat.
Je me questionne aussi à savoir s'il est possible de laisse le champ # (numéro) fixe dans le formulaire. Est-ce possible que dans un formulaire en vba, les lignes doivent demeurer vide ? Dans mes notes on mentionne qu'il est préférable de ne pas mettre de ligne fixe alors je me questionne simplement.
Merci beaucoup pour votre soutien.
Mot de passe : CES
AnnieM.
Re,
Merci pour le fichier
Donc pour la saisie dans InPivot il faut 2 choses
Private Sub IntPivot_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim sTab() As String
If Me.IntPivot = "" Then Exit Sub
' Sinon Tableau des valeurs
sTab = Split(Me.IntPivot, " ")
' Si différent de 3 valeurs
If UBound(sTab) > 3 Then
MsgBox "Le champ doit être composé de la façon suivante :" & vbCr _
& "NOM Prénom-composé 00000", vbCritical, "OUPS..."
Application.EnableEvents = False
Me.IntPivot.Value = ""
Application.EnableEvents = True
Cancel = True
End If
End Sub
' Saisi de lettres, espace et de chiffres uniquement
Private Sub IntPivot_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim TxtOk As String
TxtOk = "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789"
If InStr(1, TxtOk, Chr(KeyAscii), vbTextCompare) = 0 Then KeyAscii = 0
End SubPour le reste, je ne comprends pas vraiment les questions désolés
Je me questionne aussi à savoir s'il est possible de laisse le champ # (numéro) fixe dans le formulaire.
Le formulaire = l'USF ou USerform, c'est ça ?
On peut mettre la valeur directement dans la propriété "Value" du contrôle
Est-ce possible que dans un formulaire en vba, les lignes doivent demeurer vide ?
Donc je suppose qu'on parle toujours de l'USF
la formulation n'est pas française
C'est : Est-ce possible dans un USF de laisser les contrôles vides ?
ou : Est-ce possible que dans un USF les contrôles demeurent vide ?
ou....
A+
Bonsoir BrunoM45,
Je travaille avec beaucoup d'anglicisme avec code dans le vba à l'intérieur du cursus et j'ai moi-même beaucoup de difficulté à saisir. Je suis bien désolée pour cela. Je parle effectivement de Userform.
Bonne soirée !
Annie