VBA compteur de caractères dans userform

Résolu
fr.chaumon -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aurais besoin d'aide pour deux petites choses sous excel.

Voilà, j'ai un userform avec 2 champs à remplir qui servent par la suite à créer une nouvelle feuille. J'ai bien Réussi à créer une conditions pour que la longueur de chaine ne dépasse pas un certains nombre de caractères.

Ce que j'aimerais c'est insérer dans ce userform est un compteur de chaine, c'est à dire insérer une ptite case qui indique le nombre de caractères des 2 champs réunis (et qui passe en rouge si la valeur maximale est dépassée si possible).

Private Sub CommandButton1_Click()
    Dim MyLen
    MyLen1 = Len(NomCont.Value)
    MyLen2 = Len(IdLot.Value)
    MyLen = MyLen1 + MyLen2
    If MyLen > 23 Then
    MsgBox ("Le nom du contrôle est trop long, pas plus de 23 caractères !")
                Frame1.BackColor = RGB(102, 153, 153)
                Frame1.ForeColor = RGB(102, 0, 0)
                Frame4.BackColor = RGB(102, 153, 153)
                Frame4.ForeColor = RGB(102, 0, 0)
    NomCont.SelStart = 1
    Else
        If NomCont.Value = "" Then 'Evite d'entrer un nom de parametre nul
            Frame4.BackColor = RGB(102, 153, 153)
            Frame4.ForeColor = RGB(102, 0, 0)
            Response = MsgBox("Vous n'avez entré aucun nom de contrôle" & Chr(10) & "Voulez vous abandonner ?", vbYesNo)
            If Response = vbYes Then
            NEWLOT.Hide
            End
            End If
        Else
            If IdLot.Value = "" Then 'Evite d'entrer un autre caractère qu'un chiffre
            Frame1.BackColor = RGB(102, 153, 153)
            Frame1.ForeColor = RGB(102, 0, 0)
            MsgBox "Lot obligatoire"
            IdLot.SelStart = 1
            IdLot.SelLength = Len(IdLot.Text)
            Else
                If Not IsDate(OuvLot.Text) Then
                Frame2.BackColor = RGB(102, 153, 153)
                Frame2.ForeColor = RGB(102, 0, 0)
                MsgBox "Format date obligatoire (type JJ/AA/MMMM)"
                OuvLot.SelStart = 1
                OuvLot.SelLength = Len(OuvLot.Text)
                Else
                NEWLOT.Hide
                End If
            End If
        End If
    End If
End Sub


1 réponse

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Private Sub TextBox1_Change() 
        Label1 = Len(TextBox1) + Len(TextBox2) 
        couleur 
    End Sub 
    
    Private Sub TextBox2_Change() 
        Label1 = Len(TextBox1) + Len(TextBox2) 
        couleur 
    End Sub 
    
    Private Sub couleur() 
        If Len(TextBox1) + Len(TextBox2) > 4 Then 
            Label1.ForeColor = vbRed 
        Else 
            Label1.ForeColor = vbBlack 
        End If 
    End Sub 

    https://www.cjoint.com/?BJbnzizfq8L

    eric

    Jamais tu ne répondras à un mp non sollicité...
    Bon, ça c'est fait.
    1
    1. fr.chaumon
       
      Impec,

      Merci eriiic, ça marche très bien. J'ai même réussi à insérer un msgbox qui permet de stopper la suite des opérations.
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ok, je met en résolu pour toi.
      eric
      0