-----Message d'origine-----
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox,
j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
.
-----Message d'origine-----
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox,
j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
.
-----Message d'origine-----
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox,
j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
.
-----Message d'origine-----
Salut jcg23,
Et de cette façon ?
Private Sub TextBox3_Exit( _
ByVal Cancel As MSForms.ReturnBoolean)
Dim Pos As Integer
With TextBox3
Pos = InStr(.Text, ".") Or InStr(.Text, ",")
If Pos <> 0 Then
MsgBox "Vous devez saisir un nombre entier !"
.Text = Left(.Text, Pos - 1)
End If
End With
End Sub
Hervé.
"jcg23" a écrit
dans le message news:
001501c3b05b$0de4d940$
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
En fait mon problème est que dès que j'introduit la ligne
avec msgbox, le curseur disparait et je ne peux faire
.
-----Message d'origine-----
Salut jcg23,
Et de cette façon ?
Private Sub TextBox3_Exit( _
ByVal Cancel As MSForms.ReturnBoolean)
Dim Pos As Integer
With TextBox3
Pos = InStr(.Text, ".") Or InStr(.Text, ",")
If Pos <> 0 Then
MsgBox "Vous devez saisir un nombre entier !"
.Text = Left(.Text, Pos - 1)
End If
End With
End Sub
Hervé.
"jcg23" <anonymous@discussions.microsoft.com> a écrit
dans le message news:
001501c3b05b$0de4d940$a501280a@phx.gbl...
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
En fait mon problème est que dès que j'introduit la ligne
avec msgbox, le curseur disparait et je ne peux faire
.
-----Message d'origine-----
Salut jcg23,
Et de cette façon ?
Private Sub TextBox3_Exit( _
ByVal Cancel As MSForms.ReturnBoolean)
Dim Pos As Integer
With TextBox3
Pos = InStr(.Text, ".") Or InStr(.Text, ",")
If Pos <> 0 Then
MsgBox "Vous devez saisir un nombre entier !"
.Text = Left(.Text, Pos - 1)
End If
End With
End Sub
Hervé.
"jcg23" a écrit
dans le message news:
001501c3b05b$0de4d940$
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
En fait mon problème est que dès que j'introduit la ligne
avec msgbox, le curseur disparait et je ne peux faire
.
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
-----Message d'origine-----
Salut
Par rapport à ta question de départ
passes la propriété Showmodal du Userform ( à partir
excel 2000) à False
et ton msgbox s'affichera
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)
"jcg23" a écrit
dans le message de
news: 001501c3b05b$0de4d940$
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
Bonsoir,
.
-----Message d'origine-----
Salut
Par rapport à ta question de départ
passes la propriété Showmodal du Userform ( à partir
excel 2000) à False
et ton msgbox s'affichera
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)
"jcg23" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news: 001501c3b05b$0de4d940$a501280a@phx.gbl...
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
Bonsoir,
.
-----Message d'origine-----
Salut
Par rapport à ta question de départ
passes la propriété Showmodal du Userform ( à partir
excel 2000) à False
et ton msgbox s'affichera
a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)
"jcg23" a écrit
dans le message de
news: 001501c3b05b$0de4d940$
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
Bonsoir,
.
Bonsoir,
Personnellement, je préfère controler la saisie
au fur et à mesure avec l'événement Change :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Avec cette procédure, un message est affiché si le
contenu du TextBox, nommé ici "TMontant" n'est pas
numérique.
Le dernier caractère saisi est ensuite supprimé.
Si le montant est numérique, mais pas entier, un
autre message est affiché, et cette fois les 2 derniers
caractères saisis sont supprimés, pour tenir compte
du séparateur décimal.
La procédure précédente n'accepte pas les nombres né-
gatifs, car le "-" initial n'est pas accepté, d'où cette
variante :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
If TMontant <> "-" Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
End If
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End SubBonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir,
Personnellement, je préfère controler la saisie
au fur et à mesure avec l'événement Change :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Avec cette procédure, un message est affiché si le
contenu du TextBox, nommé ici "TMontant" n'est pas
numérique.
Le dernier caractère saisi est ensuite supprimé.
Si le montant est numérique, mais pas entier, un
autre message est affiché, et cette fois les 2 derniers
caractères saisis sont supprimés, pour tenir compte
du séparateur décimal.
La procédure précédente n'accepte pas les nombres né-
gatifs, car le "-" initial n'est pas accepté, d'où cette
variante :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
If TMontant <> "-" Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
End If
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonsoir,
Personnellement, je préfère controler la saisie
au fur et à mesure avec l'événement Change :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Avec cette procédure, un message est affiché si le
contenu du TextBox, nommé ici "TMontant" n'est pas
numérique.
Le dernier caractère saisi est ensuite supprimé.
Si le montant est numérique, mais pas entier, un
autre message est affiché, et cette fois les 2 derniers
caractères saisis sont supprimés, pour tenir compte
du séparateur décimal.
La procédure précédente n'accepte pas les nombres né-
gatifs, car le "-" initial n'est pas accepté, d'où cette
variante :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
If TMontant <> "-" Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
End If
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End SubBonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour;
Pourquoi pas une petite fonction ?
Private Sub TextBox1_Change()
Me.TextBox1 = LTrim(UCase(Me.TextBox1))
End Sub
Function CleanChain(Chain As String, Optional Dec As Boolean = False) As
String
Dim nb As String * 1, i As Byte, Cars As String, OkChain As String
Cars = "0123456789": If Dec Then Cars = Cars & ".,"
For i = 1 To Len(Chain)
nb = Mid(Chain, i, 1)
If Dec And (nb = "," Or nb = ".") Then
nb = Application.International(xlDecimalSeparator)
If ExistingDecimalSeparator(OkChain, nb) Then GoTo Suivant
End If
If InStr(1, Cars, nb) > 0 Then OkChain = OkChain & nb
Suivant:
Next i
CleanChain = OkChain
End Function
Private Function ExistingDecimalSeparator(Chain As String, L As String) As
Boolean
ExistingDecimalSeparator = CBool(InStr(1, Chain, L) > 0)
End Function
MP
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Personnellement, je préfère controler la saisie
au fur et à mesure avec l'événement Change :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Avec cette procédure, un message est affiché si le
contenu du TextBox, nommé ici "TMontant" n'est pas
numérique.
Le dernier caractère saisi est ensuite supprimé.
Si le montant est numérique, mais pas entier, un
autre message est affiché, et cette fois les 2 derniers
caractères saisis sont supprimés, pour tenir compte
du séparateur décimal.
La procédure précédente n'accepte pas les nombres né-
gatifs, car le "-" initial n'est pas accepté, d'où cette
variante :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
If TMontant <> "-" Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
End If
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End SubBonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour;
Pourquoi pas une petite fonction ?
Private Sub TextBox1_Change()
Me.TextBox1 = LTrim(UCase(Me.TextBox1))
End Sub
Function CleanChain(Chain As String, Optional Dec As Boolean = False) As
String
Dim nb As String * 1, i As Byte, Cars As String, OkChain As String
Cars = "0123456789": If Dec Then Cars = Cars & ".,"
For i = 1 To Len(Chain)
nb = Mid(Chain, i, 1)
If Dec And (nb = "," Or nb = ".") Then
nb = Application.International(xlDecimalSeparator)
If ExistingDecimalSeparator(OkChain, nb) Then GoTo Suivant
End If
If InStr(1, Cars, nb) > 0 Then OkChain = OkChain & nb
Suivant:
Next i
CleanChain = OkChain
End Function
Private Function ExistingDecimalSeparator(Chain As String, L As String) As
Boolean
ExistingDecimalSeparator = CBool(InStr(1, Chain, L) > 0)
End Function
MP
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:3FBE906A.A72E10D4@Suppgaboly.com...
Bonsoir,
Personnellement, je préfère controler la saisie
au fur et à mesure avec l'événement Change :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Avec cette procédure, un message est affiché si le
contenu du TextBox, nommé ici "TMontant" n'est pas
numérique.
Le dernier caractère saisi est ensuite supprimé.
Si le montant est numérique, mais pas entier, un
autre message est affiché, et cette fois les 2 derniers
caractères saisis sont supprimés, pour tenir compte
du séparateur décimal.
La procédure précédente n'accepte pas les nombres né-
gatifs, car le "-" initial n'est pas accepté, d'où cette
variante :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
If TMontant <> "-" Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
End If
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Bonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Bonjour;
Pourquoi pas une petite fonction ?
Private Sub TextBox1_Change()
Me.TextBox1 = LTrim(UCase(Me.TextBox1))
End Sub
Function CleanChain(Chain As String, Optional Dec As Boolean = False) As
String
Dim nb As String * 1, i As Byte, Cars As String, OkChain As String
Cars = "0123456789": If Dec Then Cars = Cars & ".,"
For i = 1 To Len(Chain)
nb = Mid(Chain, i, 1)
If Dec And (nb = "," Or nb = ".") Then
nb = Application.International(xlDecimalSeparator)
If ExistingDecimalSeparator(OkChain, nb) Then GoTo Suivant
End If
If InStr(1, Cars, nb) > 0 Then OkChain = OkChain & nb
Suivant:
Next i
CleanChain = OkChain
End Function
Private Function ExistingDecimalSeparator(Chain As String, L As String) As
Boolean
ExistingDecimalSeparator = CBool(InStr(1, Chain, L) > 0)
End Function
MP
"Michel Gaboly" a écrit dans le message de
news:Bonsoir,
Personnellement, je préfère controler la saisie
au fur et à mesure avec l'événement Change :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End Sub
Avec cette procédure, un message est affiché si le
contenu du TextBox, nommé ici "TMontant" n'est pas
numérique.
Le dernier caractère saisi est ensuite supprimé.
Si le montant est numérique, mais pas entier, un
autre message est affiché, et cette fois les 2 derniers
caractères saisis sont supprimés, pour tenir compte
du séparateur décimal.
La procédure précédente n'accepte pas les nombres né-
gatifs, car le "-" initial n'est pas accepté, d'où cette
variante :
Private Sub TMontant_Change()
If TMontant <> "" Then
If Not IsNumeric(TMontant) Then
If TMontant <> "-" Then
MsgBox "Le montant doit être un nombre !", 48
TMontant = Left(TMontant, Len(TMontant) - 1)
End If
ElseIf Int(TMontant) - TMontant <> 0 Then
MsgBox "Le montant doit être un nombre entier !", 48
TMontant = Left(TMontant, Len(TMontant) - 2)
End If
End If
End SubBonjour,
Pour controler ma saisie (dans ce cas pour m'assurer que
la valeur saisie est un entier) dans un textbox, j'utilise
l'événement exit de la façon suivante :
Private Sub TextBox3_Exit(ByVal Cancel As
MSForms.ReturnBoolean)
If Fix(CDbl(TextBox3.Value)) <> CDbl(TextBox3) Then
'MsgBox "Vous devez saisir un nombre entier"
Cancel = True
TextBox3 = ""
Else
Cancel = False
End If
End Sub
Tout fonctionne bien, mais si je veux faire apparaitre un
message d'avertissement avec msgbox, ça ne marche plus.
Comment faire ? Merci de votre aide.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com