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 Sub

Ma 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 If

A+

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 Sub

Merci !

Re,

"nomprenom_Change" n'est pas une formule mais un évènement

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 Sub

A+

Toute cette précision m'apprend beaucoup.

Merci beaucoup !

Bonne soirée

Re,

Encore une autre petite leçon

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 Sub

Pour 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

Rechercher des sujets similaires à "condition champs formulaire"