Valeur specifique d'un textbox

Bonjour à tous,

Je suis sur un projet planning que je voudrai que les textbox n'acceptent que certaines valeurs exp A, B, C, D qui ne sont qu'en majuscule.

J'ai essayé ceci: if textbox1<>"A | B then

msgbox ("cette lettre n'est pas acceptée")

END IF

Mais il me donne toujours le message du MSGBOX.

quelqu'un pourrait-il m'aider SVP

Merci d'avance

Amicalement

Noel

Bonjour Noel,

Une solution :

  • Tu affectes un 1 à la propriété MaxLength du TextBox1
  • Et tu mets le code suivant dans le code du Userform :
Private Sub TextBox1_Change()
If TextBox1.Value Like "[!A-D]" Then MsgBox "cette lettre n'est pas acceptée": TextBox1.Value = ""
End Sub

Re,

Bonjour Vba-New,

Je te remercie cela fonctionne très bien.

Mais je n'ai pas que ceux là comme lettres j'ai aussi : R, RF, FC, AD, BD, A. et B. alors là comment faire.

merci d'avance pour ton aide

Amicalement

Noel

Re,

Ah ça devient plus difficile avec l'évènement TextBox_Change. Est-ce que par hasard tu passes par un bouton pour valider ce qu'il y a dans ton textbox ?

re,

Non j'utilise aucun bouton pour valider.

De plus j'ai mis un code dans le textbox afin de faciliter la tabulation automatique pour passer au textbox suivant, mias il n'accepte pas 2 lettres à la première lettre le curseur passe au textbox suivant.

Il me semble que j'ai trouvé une solution avec [!A,R,RF,D,B,C,CF] mais reste la frappe de 2 lettres avant de paser dans le prochain textbox;

Merci de ton aide

@+

Amicalement

Noel

Bonjour noel,

Et si tu remets à 2 la valeur de MaxLength du textbox ?

Bonjour à tous,

Bonjour Vba-New,

J'avais déjà essayé auparavant. A la première frappe il passe au textbox suivant.

Il faut savoir que dans les textbox j'ai mis ce code :

Private Sub TextBox1_Change()
TextBox2.SetFocus
End Sub

Faut-il mettre un autre code pour lui ordonner de passer au textbox suivant?

If TextBox1.Value Like "[!A,B,C,D,F,R]" Then MsgBox "cette lettre n'est pas acceptée": TextBox1.Value = "" ça me facilite la saisie. A ce moment il accepte les lettres référencées mais j'aurai voulu rajouter : AD,A.,BD,B.,CF,RF apparemment il prend toutes ces lettre il faut reveni dessus pour rajouter la lettre qui manque

exp : si je tappe "A" alors qu j'ai besoin d'un "AD" à la frappe du "A" il passe au textbox suivant.

Merci beaucoup de ton aide

Amicalement

Noel

Au lieu d'utiliser la propriété SetFocus, utilise la propriété AutoTab.

Initialise ton Userform comme ceci (code de silkyroad) :

Private Sub UserForm_Initialize()
    'Définit le nombre de caractères maxi dans le textbox
    TextBox1.MaxLength = 2
    'Définit la tabultation automatique
    TextBox1.AutoTab = True
End Sub

Dès que le nombre maxi de caractères est atteint, ça passe directement au contrôle suivant (en espérant que ton Textbox2 soit ce contrôle suivant...)

Bonjour,

vba-new a écrit :

(en espérant que ton Textbox2 soit ce contrôle suivant...)

Au pire cela peut se régler dans la propriétés "TabIndex" des contrôles

Cordialement.

Re,

Vba-new,

Effectivement à la saisie de la 2ème lettre il passe à un autre textbox mais pas au suivant.

donc TextBox1.AutoTab = True ne fonctionne pas.

Bonjour Zirak,

Tu pense bien que c'est un des premières commandes qui est venue à mon idée. Mais étant sous MAC cette option ne marche pas

merci à vous 2 de votre aide

Amicalement

Noel

En ajoutant cette ligne dans le Change du textbox :

If Len(TextBox1.Value) = 2 Then TextBox2.SetFocus

Re,

A la saisie il attend que le contenu de la textbox soit de 2 lettres pour passer à la suivante. En observant bien le curseur passe effectivement par la textbox2 en un bref passage et va se positionner dans la dernière textbox.

Je crois qu'avec ton aide et de Zirak on a survoler les possibilités de la tabulation auto et rien ne change.

Je te remercie

Amicalement

Noel

Rechercher des sujets similaires à "valeur specifique textbox"