UserForm / TextBox contrôles chaîne de caractères alphanum

Bonjour,

J'ai besoin de faire les contrôles suivant sur un TextBox d'un UserForm :

- saisie d'une chaîne de caractère alphanumérique ne comportant que des lettres de l'alphabet et des chiffres (pas d'espace, pas de , etc.), mais comportant bien à la fois des lettres et des chiffres.

Exemples :

AAAAA >> NOK

AAAA1 >> OK

AAA 1 >> NOK

AAA,1 >> NOK

D'ailleurs, est-ce que je ne peux pas faire ça en amont dans les propriétés de la TextBox ?

Si vous avez des idées je suis preneur.

Bonsoir,

Je verrais bien un truc dans ce genre :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Dim vch$, v(1), i%
    vch = UCase(TextBox1.Value)
    For i = 1 To Len(vch)
        Select Case Asc(Mid(vch, i, 1))
            Case 48 To 57
                v(0) = v(0) + 1
            Case 65 To 90
                v(1) = v(1) + 1
            Case Else
                vch = "": Exit For
        End Select
    Next i
    If Not (v(0) > 0 And v(1) > 0) Then vch = ""
    If vch = "" Then Cancel = True
    TextBox1.Value = vch
End Sub

Cordialement.

Bonjour MFerrand,

Je n'ai pas encore appliqué ton code mais j'ai cherché à le comprendre et j'ai appris plein de choses :

  • La définition des variables en utilisant $,%
  • Ucase()
  • Asc()
  • Mid()
  • Select Case

Par contre, je ne comprends pas le 1 dans la définition de la variable v(1) et ce que veux dire ByVal Cancel as MSForms.ReturnBoolean ne m'est pas bien clair.

Si quelqu'un pouvait m'expliquer simplement ?

En tout cas un grand merci MFerrand

v(1) déclare un tableau à 2 éléments, d'indices 0 et 1.

Par défaut l'indice minimal d'un tableau est 0.

On peut le modifier avec une instruction Option Base 1 en tête de module, mais je ne le conseille pas, on finit toujours par se mélanger à un moment ou un autre, ce qui provoque des erreurs qu'on peut chercher un moment...

Si on ne débute pas un tableau à l'indice 0, il suffit de le mentionner dansla déclaration.

Exemple : Dim Tablo(1 To 10)

Bonne continuation.

Ah ! j'oubliais Cancel ! Il s'agit d'une variable renvoyée par certains évènements pour intervenir sur sa finalisation lorsqu'elle n'a pas encore eu lieu. Ici, la validation d'une saisie d'un TextBox intervient lorsque l'on appuie sur Entrée ou la touche Tab, ou bien en se déplaçant vers un autre contrôle à la souris. Cela se finalise par le passage du focus sur le contrôle suivant dans l'ordre de tabulation (ou le contrôle sélectionné). En mettant Cancel à True dans la procédure, lorsque l'on a testé que la saisie n'était pas valide et qu'on l'a effacée, cela annule la finalisation, et le curseur devrait rester sur la TextBox (en attente d'une saisie valide).

Super ça m'aide je vais pouvoir mettre en place d'autres contrôles sur d'autres TextBox grâce à toi.

Merci de ta clarté. J'ai l'impression d'apprendre des choses.

J'espère que ce n'est pas qu'une impression !

Bye !

Rechercher des sujets similaires à "userform textbox controles chaine caracteres alphanum"