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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <jpm...@club-internet.fr> 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
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
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
... ça m'ouvre des perspectives...
Merci
jpmalb
"anonymousA" <anonymousA@wanadoo.fr> a écrit dans le message de news:
1171361521.577416.66330@v45g2000cwv.googlegroups.com...
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" <jpm...@club-internet.fr> 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
... ç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
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
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" <jpmalb@club-internet.fr> a écrit dans le message de news:
45d18241$0$21146$7a628cd7@news.club-internet.fr...
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
'------------------------------ 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
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
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" <michdenis@hotmail.com> a écrit dans le message de news:
%23ogCnn4THHA.5108@TK2MSFTNGP06.phx.gbl...
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" <jpmalb@club-internet.fr> a écrit dans le message de news:
45d18241$0$21146$7a628cd7@news.club-internet.fr...
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
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