problemes formet dans textbox

D

damien

Guest
bonjour,

je voudrai qu'il m'affiche automatiquement 4 chiffres dans mon textbox.
exemple si je tape 4 qu'il m'affiche 0004
si je tape 456 qu'il m'affiche 0456.
merci pour vos reponses
dam
 

Bricofire

XLDnaute Impliqué
Bonjour, damine, DDalmon :)

Bon ça ne resout pas ton pb de 4 chiffres uniquement, tu pourrais facilement utiliser la propriéte 'MaxLengh' de la texbox, mais le format mettant déjà 4 digits à la première frappe, ça va bloquer, donc mettre un filtre ou jouer sur différentes procédures private.
ce qui suit est une solution possible...



Private Sub Txtb1_Change()
Dim Rep as variant 'évite les plantages sur une entré alpha par rapport à 'Long'
Rep = Txtb1.Value
If IsNumeric(Rep) = False Then
MsgBox ' Vous devez entrer un nombre ! 4 chiffres maxi...'
Rep = 0
End
End If
If Rep > 9999 Then
MsgBox ' 4 chiffres maxi'
End
Else: Txtb1 = Format(Rep, '0000')
End If
End Sub


cordialement,

Bfr
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonjour Damien, Ddalmont, Bricofire, le forum

La, pas d'accord, fonctionne pas ton code, Bricofire. :huh:
1-en cas de valeur non numérique, le end arréte l'exécution et ferme le userform.
2-le test ne vérifie pas que le chiffre entré est entier mais seulement numérique.
3-en cas de valeur > à 4 digits, le end arréte l'exécution et ferme le userform.
4-utiliser un variant ne sert à rien

voila un code différent utilisant Exit (salut thierry ;) ) qui reste sur la textbox si la valeur entrée est incorrecte, à utiliser en passant la propriété maxlenght de la textbox à 4 pour le nombre de caractères.

Cordialement
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If IsNumeric(TextBox1.Value) = False Then
    MsgBox ' Vous devez entrer un nombre entier !', vbOKOnly + vbInformation
    TextBox1.Value = ''
    Cancel = True
Else
    If Not (TextBox1.Value / 1 = TextBox1.Value \\ 1) Then
        MsgBox ' Vous devez entrer un nombre entier !', vbOKOnly + vbInformation
        TextBox1.Value = ''
        Cancel = True
    Else
        TextBox1.Value = Format(TextBox1.Value, '0000')
    End If
End If
End Sub
 

Hellboy

XLDnaute Accro
Bonsoir a tous

Ceci est une autre façon aussi. Il est a noter que je ne vérifie pas le type de l'information (numérique ou texte) et que je ne traite pas si l'information est égale ou plus grande que 4 caractères.

Private Sub TextBox1_Change()
With UserForm1.TextBox1
   
Select Case Len(.Value)
           
Case 3
                .Value = '0' & .Value
           
Case 2
                .Value = '00' & .Value
           
Case 1
                .Value = '000' & .Value
   
End Select
End With
End Sub

Message édité par: Hellboy, à: 30/07/2005 22:50
 

Hellboy

XLDnaute Accro
re a tous

Mon code ne fonctionnais pas bien, celui-ci est OK ! désolé :eek:

Private Sub TextBox1_Change()
With UserForm1.TextBox1
   
Select Case Len(.Value)
         
Case Is >= 4
                .Value = Right(.Value, 4)
         
Case 3
                .Value = '0' & Right(.Value, 4)
         
Case 2
                .Value = '00' & Right(.Value, 4)
         
Case 1
                .Value = '000' & Right(.Value, 4)
   
End Select
End With
End Sub
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87