VBA compteur de caractères dans userform

Résolu/Fermé
fr.chaumon - 1 oct. 2012 à 13:01
eriiic Messages postés 24575 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 26 mai 2024 - 1 oct. 2012 à 14:30
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


A voir également:

1 réponse

eriiic Messages postés 24575 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 26 mai 2024 7 219
Modifié par eriiic le 1/10/2012 à 13:25
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
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
eriiic Messages postés 24575 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 26 mai 2024 7 219
1 oct. 2012 à 14:30
ok, je met en résolu pour toi.
eric
0