Validation d'une saisie Textbox avec "Entrée"

Bonjour à tous,

Je vais tout vous expliquer via 3 captures qui représenteront les étapes. Vous allez voir, que au final, ma requête est toute bête.

Capture 1 : On a un N Site avec une liste déroulante et deux zones de textes et deux Textbox.

Capture 2 : Lorsque que l'on choisit un N Site, les deux zones textes situé en dessous vont se remplir automatiquement.

Exemple : Je choisit "N01". J'ai pour la commande d'achat ; PON0120 et pour la commande de vente ; CON0120.

Capture 3 : Ensuite je dois rajouter 5 chiffres à la suite des valeurs des zones de textes.

Exemple :

- (POUR LA COMMANDE D'ACHAT) : Si je met "12345" dans la Textbox ET QUE JE FAIS "ENTRÉE, cela me met dans la zone de texte "PON012012345".

Problème : Pour LA COMMANDE DE VENTE, je fais exactement le même processus….mais à ma grande surprise, si je fais ENTRÉE, cela ne fonctionne pas. Je dois recliquer sur la Textbox pour que ça s'actualise dans la zone de texte.

En soit cela fonctionne mais c'est assez dérangeant…

Voici le code (Txt_CE = Textbox pour la commande vente et Txt_CA = TextBox pour la commande achat) :

Private Sub Txt_CA_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim a As Integer, b As Integer

  a = Len(Label12.Caption)
  b = Len(Txt_CA.Value)

If Cbx_Site = "" Then
    MsgBox "Veuillez choisir un site", vbInformation, "Informations"
Else
    If IsNumeric(Txt_CA) And a + b = 12 Then
        Label12.Caption = Label12.Caption & Txt_CA
    Else
        If IsNumeric(Txt_CA) And a = 12 And b = 5 Then
            Label12.Caption = "PO" & Cbx_Site.Value & "20"
            Label12.Caption = Label12.Caption & Txt_CA
        Else
            MsgBox "Saisie incorrecte: Vous devez saisir 5 chiffres !", vbInformation, "Informations"
            Txt_CA = ""
        End If
   End If
End If
End Sub

Private Sub Txt_CE_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim c As Integer, d As Integer

    c = Len(Label10.Caption)
    d = Len(Txt_CE.Value)

If Cbx_Site = "" Then
    MsgBox "Veuillez choisir un site", vbInformation, "Informations"
Else
    If IsNumeric(Txt_CE) And c + d = 12 Then
        Label10.Caption = Label10.Caption & Txt_CE
    Else
        If IsNumeric(Txt_CE) And c = 12 And d = 5 Then
            Label10.Caption = "CO" & Cbx_Site.Value & "20"
            Label10.Caption = Label10.Caption & Txt_CE
        Else
            MsgBox "Saisie incorrecte: Vous devez saisir 5 chiffres !", vbInformation, "Informations"
            Txt_CE = ""
        End If
    End If
End If
End Sub

Peut-être que cela vient de la procédure en elle-même.

Faites moi part de votre intérêt pour mon fichier pour de plus amples détails

Bien cordialement,

capture 3 capture 2 capture 1

Bonjour,

Un truc que je ne comprends pas ? il est ou l'intérêt de mettre deux lignes et deux textbox "code" puis 2 textbox "montant"

Tu peux pas faire un combobox choix ? : Commande Vente ou Commande Achat.

une fois la sélection faite dans la combobox avec un if ton code final sera généré plus simplement dans 2 textboxs uniquement et

pas 4

Tu ne vas pas saisir les ventes et les achats en même temps ?

Malheureusement...non.

En faites, je ne vous ai montré que la partie qui concerne mon problème. En fait ce Userform est un formulaire à compléter puis valider et chaque info sera copié dans un tableau (autre onglet) qui s'incrémentera au fur et à mesure.

Il existe deux types de commandes : achat et vente. Celle-ci sont différentes et sont indépendantes les unes des autres. Je ne peux pas créer de liste déroulante malheureusement car les deux doivent être forcément présentes.

Désolé pour mes explications non-compréhensible,

Bien cordialement,

Bonjour MPETIT, le forum,

Salut Xmenpl,

Un fichier joint nous aurait permis de comprendre ce que tu souhaites faire, par défaut, tu auras donc une réponse hasardeuse.

Vois si ceci peut t'aider....

11b-v4.xlsm (26.15 Ko)

Je n'ai fait que doubler le codage que je t'avais fourni dans le précédent post,

Mais je ne suis pas un pro, il y a surement moyen d'optimiser, encore faut-il avoir un fichier test....

Cordialement,

Bonjour le forum

Bonjour MPETIT, Xmenpl, xorsankukai

En reprenant ton post d'hier où tu indiques que la valeur saisie sera de 12 caractères dont 5 chiffres en fin de TextBox.

Private Sub UserForm_Initialize()
 Dim LastLig As Long
     LastLig = Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
  Me.ComboBox1.RowSource = "Feuil1!A1:A" & LastLig
  Me.CMB2.RowSource = "Feuil1!A1:A" & LastLig
 'Me.ComboBox1.RowSource = "A1:A" & [A65000].End(xlUp).Row
 Me.TextBox1.MaxLength = 12
End Sub

Private Sub Combobox1_Change()
  If ComboBox1.Value <> "" Then
   TextBox1.Value = "PO" & ComboBox1.Value & "20"
    TextBox1.SetFocus
    End If
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
       If Not Chr(KeyAscii) Like "[0-9-,]" Then KeyAscii = 0
End Sub

J'ai épuré quelque peu le code mais tu peux replacer des barrières si les champs ne sont pas renseignés.

Rechercher des sujets similaires à "validation saisie textbox entree"