forcer un textbox a accepter le format 01

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
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é.
 
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:
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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour