forcer un textbox a accepter le format 01

charette63

XLDnaute Occasionnel
bonjour à toutes et tous,

je demande à l'utilisateur d'un petit programme d'inserer dans un textbox le numéro d'un mois (01,02,...). Un msgbox apparaît si le chiffre renseigné est inférieur à 1. Le problème est, comme je demande d'entrer le numéro en deux chiffres, la msgbox s'active dès l'insertion du 0.
Y-a-t-il moyen de remédier à ce problème.

Je joint un petit fichier.

Auriez-vous, également le gentillesse de noter le code dans votre message réponse, le serveur de mon boulot m'empèche d'ouvrir les pièces jointes.

merci

cordialement
Thierry
 

Pièces jointes

  • test12.xls
    22.5 KB · Affichages: 29
  • test12.xls
    22.5 KB · Affichages: 27
  • test12.xls
    22.5 KB · Affichages: 31

Bebere

XLDnaute Barbatruc
Re : forcer un textbox a accepter le format 01

bonjour Charette

Code:
Private Sub TextBox1_Change()
    If TextBox1.Value <> "" Then
        If TextBox1.Value < 1 Or TextBox1.Value > 12 Then
            MsgBox " chiffre entre 1et 12,svp", vbOKOnly, "AVERTISSEMENT"
            TextBox1 = ""
            Exit Sub
        Else
            If Len(TextBox1) = 2 Then
                TextBox1 = TextBox1
            Else
                TextBox1 = Format(TextBox1, "00")
            End If
        End If
    End If
End Sub

à bientôt
 
Dernière édition:

Theze

XLDnaute Occasionnel
Re : forcer un textbox a accepter le format 01

Bonjour,

Il y a une solution très simple à ton problème, c'est d'utiliser un ComboBox et de le remplir à l'ouverture de ta Form :
Code:
Private Sub UserForm_Initialize()

Dim I As Integer

    For I = 1 To 12
        Me.ComboBox1.AddItem Format(I, "00")
    Next I

End Sub

Hervé.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : forcer un textbox a accepter le format 01

Bonjour Charette, bonjour le forum,

Peut-être comme ça :
Code:
Option Explicit
Private test As Boolean 'déclare la variable test
 
Private Sub TextBox1_Change()
'conditions : si la TextBox1 est vide ou vaut 0 ou si test est vrai, sort de la procédure
If Me.TextBox1.Value = 0 Or Me.TextBox1.Value = "" Or test = True Then Exit Sub
test = True 'définit la variable test (évite de boucle sur la procédure à chaque changement)
Me.TextBox1.Value = Format(Me.TextBox1.Value, "00") 'change le format de la TextBox1
If TextBox1.Value < 1 Or Me.TextBox1.Value > 12 Then 'condition : si la valeur entrée ne correspond pas à un mois
    MsgBox "Mois non Valide", vbOKOnly, "AVERTISSEMENT" 'message
    TextBox1 = "" 'vide la TextBox1
End If 'fin de la condition
test = False 'redéfinit la variable test
End Sub

[Édition]
Bonjour Bebere, Theze, on s'est croisé...
 
Dernière édition:

TempusFugit

XLDnaute Impliqué
Re : forcer un textbox a accepter le format 01

Bonjour Mesdames, Messieurs

Comme Theze, emploi d'un combobox mais sans la boucle.
Code:
Private Sub UserForm_Initialize()
Dim vArray
vArray = Array("01", "02", "03", "04", "05", "06", "07", "08", "09", 10, 11, 12)
ComboBox1.List = vArray
End Sub
 

charette63

XLDnaute Occasionnel
Re : forcer un textbox a accepter le format 01

bonjour vous quatre,

c'est dingue, les quatres codes me donnent entière satisfaction, maintenant, dilemme, lequel choisir.
Pour ne faire aucun jaloux, je ne vous le dirai pas.

Avec tout mes remerciements

cordialement
Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 674
Messages
2 090 790
Membres
104 665
dernier inscrit
ronbt