Masque de saisie pour TextBox UserForm

brionfred

XLDnaute Nouveau
Bonjour à vous
Je souhaite restreindre la saisie dans un TextBox d'un Userform, à savoir :
L'utilisateur ne doit pouvoir saisir dans ce TextBox qu'un nombre de 4 chiffres (0-9999) puis un point et un nombre de 3 chiffres (0-999) Exemple [2556.004], quelqu'un pourrait-il m'aider

Cordialement
 

fanfan38

XLDnaute Barbatruc
Re : Masque de saisie pour TextBox UserForm

Bonjour
un fichier qui accompagne obtient beaucoup plus de réponse...
Est ce que cette macro te convient
Private Sub TextBox1_Change()
If Len(TextBox1.Value) < 8 Then Exit Sub
Message = "La saisie doit ressembler à 2556.004"
If Mid(TextBox1.Value, 5, 1) <> "." Then
MsgBox (Message)
Exit Sub
End If
If Len(TextBox1.Value) > 8 Then
MsgBox (Message)
Exit Sub
End If
End Sub

A+ François
 

MichD

XLDnaute Impliqué
Re : Masque de saisie pour TextBox UserForm

Bonjour,

Essaie ceci.


VB:
'----------------------------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim X As Integer
X = Asc(Format(0, "."))
Select Case KeyAscii
    Case 48 To 57
        Select Case Len(TextBox1)
            Case 0 To 3
            Case 4
                KeyAscii = X
            Case 5, 6, 7
            Case Else
                KeyAscii = 0
        End Select
    Case Else
        KeyAscii = 0
End Select
End Sub
'----------------------------------------------
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Masque de saisie pour TextBox UserForm

Bonsoir François, MichD,

RE brionfred,

Ci-joint une autre copie avec affichage du masque ("----.---") dans le TextBox.

La saisie du point n'est plus nécessaire, elle se fait automatiquement à la bonne position.

Cordialement.
 

Pièces jointes

  • Exemple 01 brionfred.xls
    62 KB · Affichages: 267
Dernière édition:

brionfred

XLDnaute Nouveau
Re : Masque de saisie pour TextBox UserForm

Bonjour à tous
Merci de vos réponses, celles-ci m'ont été très utiles. Mais je vais encore un peu vous solliciter, je souhaiterais éviter que l'on puisse enregistrer la fiche si l'utilisateur n'a pas saisie le numéro "modèle" dans le format demandé.
Parce que actuellement la fiche peut-être enregistrée même avec [####.###].

Merci de votre patience.

Ci-joint une parti de mon projet

Cordialement
 

Pièces jointes

  • Exemple.xlsm
    149.2 KB · Affichages: 112
  • Exemple.xlsm
    149.2 KB · Affichages: 94
  • Exemple.xlsm
    149.2 KB · Affichages: 98

Papou-net

XLDnaute Barbatruc
Re : Masque de saisie pour TextBox UserForm

Bonjour bionfred, le Forum,

Une solution peut-être en modifiant le code du bouton Enregistrer du formulaire UsfNouveauModele comme ceci :

Code:
Private Sub CommandButtonValider_Click()
Dim DerLig As Long

Call verifdoublon(code)
  Cancel = code

If Me.ComboBoxClient1 = "" Then
     MsgBox "Veuillez selectionner un client!"
     Me.ComboBoxClient1.SetFocus
     Exit Sub
   End If
   If Me.TextBoxModele = "" Then
     MsgBox "Veuillez saisir un numéro de modèle!"
     Me.TextBoxModele.SetFocus
     Exit Sub
   End If
     
    Me.ComboBoxClient1 = Me.ComboBoxClient1
    Me.TextBoxModele = UCase(Replace(Me.TextBoxModele, "#", "")) ' <--- Ligne modifiée
    Me.LabelNumeroclient1 = UCase(Me.LabelNumeroclient1)
 
With Worksheets("MODELES")
DerLig = .Range("A65536").End(xlUp).Row + 1
Range("A" & DerLig).Select
Sheets("MODELES").Range("A" & DerLig) = Me.ComboBoxClient1 & Val(Me.LabelNumeroclient1) & Me.TextBoxModele & Me.ComboBoxSpecificite & Me.ComboBoxParticularite
Sheets("MODELES").Range("B" & DerLig) = Val(Me.LabelNumeroclient1)
Sheets("MODELES").Range("C" & DerLig) = Me.ComboBoxClient1
Sheets("MODELES").Range("D" & DerLig) = Me.TextBoxModele
Sheets("MODELES").Range("E" & DerLig) = Me.ComboBoxSpecificite
Sheets("MODELES").Range("F" & DerLig) = Me.ComboBoxParticularite
Sheets("MODELES").Range("G" & DerLig) = Me.TextBoxCommentaire
Sheets("MODELES").Range("H" & DerLig) = Date
Sheets("MODELES").Range("J" & DerLig) = Me.ChoixPhoto
End With

Sheets("MODELES").Select
Range("A1:J65536").Select
    selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

Sheets("ACCUEIL").Select

Unload USFNouveauModele
Unload USFBase
USFBase.Show
End Sub
Cordialement.

Edit : bonjour Laetitia.
 
Dernière édition:

brionfred

XLDnaute Nouveau
Re : Masque de saisie pour TextBox UserForm

Merci à vous toutes et tous de vos réactions ultra rapides ...:rolleyes:
J'ai opté pour le code à Laetitia qui me convient très bien et fonctionne correctement sur mon projet, en y rajoutant une ou deux petites modifs (j'efface la valeur saisie et redonne le focus à l'utilisateur).

Merci encore à vous tous de votre contribution

Faut-il procéder à une manip particulière pour clore le sujet sur le forum ?

A+ Brionfred
 

Papou-net

XLDnaute Barbatruc
Re : Masque de saisie pour TextBox UserForm

RE :

Ou sinon, pour obliger la saisie avec 7 chiffres significatifs :

Code:
Private Sub CommandButtonValider_Click()
Dim DerLig As Long
' Ajout-------------------------------------------------------------
With Me.TextBoxModele
  If InStr(.Value, "#") > 0 Then
    MsgBox "Modèle non conforme !" & vbCrLf & "Veuillez corriger.", vbOKOnly + vbExclamation
    Cancel = True
    .SetFocus
    Exit Sub
  End If
End With
' Fin Ajout---------------------------------------------------------

Call verifdoublon(code)
  Cancel = code

If Me.ComboBoxClient1 = "" Then
     MsgBox "Veuillez selectionner un client!"
     Me.ComboBoxClient1.SetFocus
     Exit Sub
   End If
   If Me.TextBoxModele = "" Then
     MsgBox "Veuillez saisir un numéro de modèle!"
     Me.TextBoxModele.SetFocus
     Exit Sub
   End If
     
    Me.ComboBoxClient1 = Me.ComboBoxClient1
    Me.TextBoxModele = UCase(Me.TextBoxModele)
    Me.LabelNumeroclient1 = UCase(Me.LabelNumeroclient1)
 
With Worksheets("MODELES")
DerLig = .Range("A65536").End(xlUp).Row + 1
Range("A" & DerLig).Select
Sheets("MODELES").Range("A" & DerLig) = Me.ComboBoxClient1 & Val(Me.LabelNumeroclient1) & Me.TextBoxModele & Me.ComboBoxSpecificite & Me.ComboBoxParticularite
Sheets("MODELES").Range("B" & DerLig) = Val(Me.LabelNumeroclient1)
Sheets("MODELES").Range("C" & DerLig) = Me.ComboBoxClient1
Sheets("MODELES").Range("D" & DerLig) = Me.TextBoxModele
Sheets("MODELES").Range("E" & DerLig) = Me.ComboBoxSpecificite
Sheets("MODELES").Range("F" & DerLig) = Me.ComboBoxParticularite
Sheets("MODELES").Range("G" & DerLig) = Me.TextBoxCommentaire
Sheets("MODELES").Range("H" & DerLig) = Date
Sheets("MODELES").Range("J" & DerLig) = Me.ChoixPhoto
End With

Sheets("MODELES").Select
Range("A1:J65536").Select
    selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

Sheets("ACCUEIL").Select

Unload USFNouveauModele
Unload USFBase
USFBase.Show
End Sub
Cordialement.
 

Discussions similaires

Réponses
15
Affichages
581
Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 490
Messages
2 088 883
Membres
103 981
dernier inscrit
vinsalcatraz