OVH Cloud OVH Cloud

TxtBox.Value= "" : ça bogue...

4 réponses
Avatar
jpmalb
Bonjour
Lorsque je lance cette procédure en inscrivant 40 pour tester, le message
Msgbox apparait
et lorsque je veux rectifier pour écrire 39 " , j'ai "Erreur 13, Type
incompatible " car Theur prend la valeur = ""
Comment faire pour que la TxtBox de Theur apparaisse vide après correction
sans création de bogue et interruption de la procédure ?
Merci

Private Sub Theur_Change()
Theur.SetFocus
If Theur.Value > 39 Then
MsgBox Theur.Value & " heures = supérieure à la durée
légale"
Theur.Value = ""
Theur.SetFocus
Exit Sub
End If
End Sub

4 réponses

Avatar
anonymousA
Bonjour,

Pour faire autrement, peut-être

Private Sub Theur_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Val(Theur.Value) > 39 Then
annulTheur
Cancel = True
End If

End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)

If Val(Theur.Value) > 39 Then
annulTheur
Cancel = 1
End If

End Sub
Sub annulTheur()

MsgBox Theur.Value & " heures = supérieure à la durée légale "
Theur.Value = Null

End Sub

A+


On 13 fév, 10:18, "jpmalb" wrote:
Bonjour
Lorsque je lance cette procédure en inscrivant 40 pour tester, le messa ge
Msgbox apparait
et lorsque je veux rectifier pour écrire 39 " , j'ai "Erreur 13, Type
incompatible " car Theur prend la valeur = ""
Comment faire pour que la TxtBox de Theur apparaisse vide après corre ction
sans création de bogue et interruption de la procédure ?
Merci

Private Sub Theur_Change()
Theur.SetFocus
If Theur.Value > 39 Then
MsgBox Theur.Value & " heures = supérieure à la durée
légale"
Theur.Value = ""
Theur.SetFocus
Exit Sub
End If
End Sub


Avatar
jpmalb
... ça m'ouvre des perspectives...
Merci
jpmalb
"anonymousA" a écrit dans le message de news:

Bonjour,

Pour faire autrement, peut-être

Private Sub Theur_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

If Val(Theur.Value) > 39 Then
annulTheur
Cancel = True
End If

End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)

If Val(Theur.Value) > 39 Then
annulTheur
Cancel = 1
End If

End Sub
Sub annulTheur()

MsgBox Theur.Value & " heures = supérieure à la durée légale "
Theur.Value = Null

End Sub

A+


On 13 fév, 10:18, "jpmalb" wrote:
Bonjour
Lorsque je lance cette procédure en inscrivant 40 pour tester, le message
Msgbox apparait
et lorsque je veux rectifier pour écrire 39 " , j'ai "Erreur 13, Type
incompatible " car Theur prend la valeur = ""
Comment faire pour que la TxtBox de Theur apparaisse vide après
correction

sans création de bogue et interruption de la procédure ?
Merci

Private Sub Theur_Change()
Theur.SetFocus
If Theur.Value > 39 Then
MsgBox Theur.Value & " heures = supérieure à la durée
légale"
Theur.Value = ""
Theur.SetFocus
Exit Sub
End If
End Sub


Avatar
MichDenis
As-tu essayé quelque chose comme ceci :

'------------------------------
Private Sub TextBox1_Change()
Dim T As String
T = Me.Theur
If T = "" Then Exit Sub
If IsNumeric(Right(T, 1)) Then
If T > 39 Then
MsgBox t & " heures = supérieure à la durée légale """
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(T)
Exit Sub
End If
Else
MsgBox "La saisie est du texte"
Me.TextBox1.SelStart = Len(T) - 1
Me.TextBox1.SelLength = 1
Exit Sub
End If
End Sub
'------------------------------



"jpmalb" a écrit dans le message de news:
45d18241$0$21146$
Bonjour
Lorsque je lance cette procédure en inscrivant 40 pour tester, le message
Msgbox apparait
et lorsque je veux rectifier pour écrire 39 " , j'ai "Erreur 13, Type
incompatible " car Theur prend la valeur = ""
Comment faire pour que la TxtBox de Theur apparaisse vide après correction
sans création de bogue et interruption de la procédure ?
Merci

Private Sub Theur_Change()
Theur.SetFocus
If Theur.Value > 39 Then
MsgBox Theur.Value & " heures = supérieure à la durée
légale"
Theur.Value = ""
Theur.SetFocus
Exit Sub
End If
End Sub
Avatar
MichDenis
J'allais oublié si tu dois saisir un séparateur décimale dans le textbox
que ce soit la virgule ou le point :

'--------------------------------------
Private Sub TextBox1_Change()
Dim T As String, S As String
'déterminer le séparateur du panneau de configuration
S = Format(0, ".")
'Que l'usager utilise le point ou la virgule,
's'assurer que le séparateur est
'celui du panneau de configuration
T = Replace(Me.TextBox1, ".", S)
'Si vide, arrête la procédure
If T = "" Then Exit Sub
'S'assurer que l'usager ne peut saisir 2
'séparateurs décimales dans le textbox
If Len(T) - Len(Replace(T, S, "")) >= 2 Then
Me.TextBox1 = Left(Me.TextBox1, (Len(T) - 1))
Exit Sub
End If
'Si le textbox ne contient que le séparateur décimale
If Right(T, 1) = S Then Exit Sub
'S'assurer que la saisie est det type numérique
If IsNumeric(Right(T, 1)) Then
If Val(T) > 39 Then
MsgBox T & " heures = supérieure à la durée légale """
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(T)
Exit Sub
End If
Else
'le dernier caractère saisie est alphanumérique
MsgBox "La saisie est du texte"
Me.TextBox1.SelStart = Len(T) - 1
Me.TextBox1.SelLength = 1
Exit Sub
End If
End Sub
'--------------------------------------




"MichDenis" a écrit dans le message de news:
%
As-tu essayé quelque chose comme ceci :

'------------------------------
Private Sub TextBox1_Change()
Dim T As String
T = Me.Theur
If T = "" Then Exit Sub
If IsNumeric(Right(T, 1)) Then
If T > 39 Then
MsgBox t & " heures = supérieure à la durée légale """
Me.TextBox1.SelStart = 0
Me.TextBox1.SelLength = Len(T)
Exit Sub
End If
Else
MsgBox "La saisie est du texte"
Me.TextBox1.SelStart = Len(T) - 1
Me.TextBox1.SelLength = 1
Exit Sub
End If
End Sub
'------------------------------



"jpmalb" a écrit dans le message de news:
45d18241$0$21146$
Bonjour
Lorsque je lance cette procédure en inscrivant 40 pour tester, le message
Msgbox apparait
et lorsque je veux rectifier pour écrire 39 " , j'ai "Erreur 13, Type
incompatible " car Theur prend la valeur = ""
Comment faire pour que la TxtBox de Theur apparaisse vide après correction
sans création de bogue et interruption de la procédure ?
Merci

Private Sub Theur_Change()
Theur.SetFocus
If Theur.Value > 39 Then
MsgBox Theur.Value & " heures = supérieure à la durée
légale"
Theur.Value = ""
Theur.SetFocus
Exit Sub
End If
End Sub