Microsoft 365 TextBox avec limitation de la saisie entre 2 valeurs

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

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 !

pat66

XLDnaute Impliqué
Bonjour le forum,

Auriez vous l'amabilité de me donner un coup de main pour modifier cette macro de sorte que la saisie dans un textbox soit limitée entre 10 et 25 uniquement

Si saisie ok, clic sur ok pour valider
Si saisie pas ok, msgbox affiche erreur, clic sur ok pour modifier la saisie, clic sur ok pour valider

je vous remercie pour votre aide , voici la macro :

VB:
Private Sub b_validation_Click()
If Len(Me.nom) = 0 Then
MsgBox "Saisir une durée ! ", vbYes, " simulateur "
Exit Sub
End If
Application.ScreenUpdating = False
Application.EnableEvents = False
If IsNumeric(Me.nom.Value) Or (Me.nom.Value) <> "" Then Range("S6").Value = Format(CInt(Me.nom))
Unload Me
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

cdt
 
Dernière édition:
Bonjour Pat66
VB:
Private Sub CBOK_Click()
If Len(Me.Nom) = 0 Then
    MsgBox "Saisir une durée ! ", vbYes, " simulateur "
    Exit Sub
ElseIf IsNumeric(Me.Nom.Value) = False Or Me.Nom.Value < 10 Or Me.Nom.Value > 25 Then
    MsgBox "Saisir une valeur comprise entre 10 et 25! ", vbYes, " simulateur "
    Exit Sub
End If
Application.ScreenUpdating = False
Application.EnableEvents = False
Range("S6").Value = Format(CInt(Me.Nom))
Unload Me
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

Bonne journée
 
re,

merci pour votre aide, je me suis inspiré de votre idée et j'ai simplifié ainsi, qu'en pensez vous ?

Code:
Private Sub b_validation_Click()
If Len(Me.nom) = 0 Or Me.nom.Value < 10 Or Me.nom.Value > 25 Or IsNumeric(Me.nom.Value) = False Then
MsgBox "Saisir une durée comprise entre 10 et 25", vbYes, "simulateur"
    Exit Sub
End If
Application.ScreenUpdating = False
Application.EnableEvents = False
Range("S6").Value = Format(CInt(Me.nom))
Unload Me
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub

bonne après midi
 
Bonjour job75,

merci pour le conseil avisé

j'ai rajouté les Application.EnableEvents car la macro a tendance à être longue sans Application.EnableEvents car la valeur qui est saisie dans S6 sert de référence pour d'autres calculs, mais c'est vrai qu'en mettant Application.EnableEvents les calculs ci dessous qui dépendent de S6 ne mettent pas à jour automatiquement

J'ai remarqué après quelques tests sans Application.EnableEvents que c'est Range("Y11").Copy Range("Y11") qui ralentit la macro

dans une autre feuille
VB:
Select Case Target.Address(0, 0)
         Range("Y11").Copy Range("Y11") 'pour simuler un changement de valeur dans Y11
         Range("F25").FormulaLocal = "=SIERREUR(RECHERCHEH(S6;CA12:CP14;3;FAUX);""<10 ans"")"
    End Select

avez vous une idée de comment faire pour accélérer cette macro ?

merci
 
Bonsoir le forum
Bonsoir pat66, bonsoir patty58, bonsoir job75

Pour ma part, j'en suis resté au post #2 et te propose ceci afin de pouvoir reprendre la main sur le TextBox :
VB:
Private Sub CommandButton1_Click()
If Len(TextBox1) = 0 Then
    MsgBox "Saisir une durée ! ", vbYes, " simulateur "
    TextBox1 = "": TextBox1.SetFocus
ElseIf IsNumeric(TextBox1.Value) = False Or TextBox1.Value < 10 Or TextBox1.Value > 25 Then
    MsgBox "Saisir une valeur comprise entre 10 et 25! ", vbYes, "  simulateur "
        TextBox1 = "": TextBox1.SetFocus
 Else
Range("A6").Value = Format(CInt(TextBox1))
Unload Me
End If
End Sub

Bonne soirée à toutes & à tous
Eric c
 
- 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

Discussions similaires

Réponses
35
Affichages
2 K
Retour