Validation spéciale d'un textbox - heures de travail

  • Initiateur de la discussion Initiateur de la discussion blord
  • 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 !

blord

XLDnaute Impliqué
Bonjour à tous,

Je sollicite votre aide pour savoir comment je pourrais valider ou ne permettre que la saisie des valeurs suivantes dans un textbox :

1- N'importe quels chiffres avant le symbole décimal
2- Un symbole décimal
3- Après le symbole décimale, uniquement les valeurs suivantes : 00, 25, 50, 75

Mon but est de valider la saisie d'heures de travail dans un textbox ou 15 minutes est indiqué par 0.25, 30 minutes par 0.50 et 45 minutes par 0.75.

Merci pour vos suggestions !

Blord
 
Re : Validation spéciale d'un textbox - heures de travail

Bonjour,
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1 = "" Then Exit Sub
If Not IsNumeric(TextBox1) Then Exit Sub 'à compléter sans doute
y = TextBox1 - Val(TextBox1)
Select Case y
    Case 0, 0.25, 0.5, 0.75
    Case Else
        MsgBox "non valide"
        TextBox1 = ""
End Select
    
End Sub
Sinon tu pourrais forcer l'utilisateur à saisir une valeur dans une combo
A+
kjin
 
Re : Validation spéciale d'un textbox - heures de travail

Salut, à adapter à ton contexte , avec une ComboBox comme suggéré par Kjin
Cela à l'air de fonctionner mais reste un peu lourd au niveau de la saisie , enfin à voir et améliorer

pour le séparateur décimal , je pense que dans ton contexte tu devras remplacer entre autre

Code:
Private Sub ComboBox1_Change()
    TextBox11.Text = TextBox10.Text & "," & ComboBox1.Text
End Sub

par

Code:
Private Sub ComboBox1_Change()
    TextBox11.Text = TextBox10.Text & "." & ComboBox1.Text
End Sub
 

Pièces jointes

Dernière édition:
Re : Validation spéciale d'un textbox - heures de travail

Bonjour à tous,

Les pistes de solutions que vous m'avez si soigneusement suggérées m'ont ammenées à ceci :

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox1.Value <> "" Then

'Converti le textbox en format heure 00.00 si la longueur du texte est de 4 caractères
If TextBox1.TextLength = 4 Then
TextBox1.Value = Mid(TextBox1, 1, 2) & "." & Mid(TextBox1, 3, 2)
Else
MsgBox "Heure invalide"
TextBox1.Value = ""
Cancel = True
Exit Sub
End If

'Valide que la valeur entrée est une heure valide (qui se termine par 00, 25, 50 ou 75)
If Right(TextBox1.Value, 2) <> 0 And Right(TextBox1.Value, 2) <> 25 And Right(TextBox1.Value, 2) <> 50 And Right(TextBox1.Value, 2) <> 75 Then
MsgBox "Heure invalide"
TextBox1.Value = ""
Cancel = True
End If
End If
End Sub


Merci !

Blord
 
- 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

V
Réponses
2
Affichages
2 K
Virginie L
V
M
Réponses
10
Affichages
66 K
Retour