Je me doute que le sujet a été plusieurs abordé, mais là, je pense qu'il
diffère un peu, (mais pas beaucoup,lol).
Je connais ce code pour obliger a la validation une valeur Numérique :
'=========Message si TextBox3 non numérique
If Not IsNumeric(MontantEntretien) Then
MsgBox "Vous devez rentrer des chiffres uniquement", vbCritical, "Attention
!"
MontantEntretien = ""
MontantEntretien.SetFocus
Exit Sub
End If
Mais deux cas se pésentent pour moi,
Le premier, c'est que je voudrais que cela réagisse directement à la saisie,
chose que j'ai tenté en mettant ce code dans :
Private Sub MontantEntretien_Change()
End Sub
Mais là, des que je fais modifier dan smon UserForm :
Private Sub ModifierEntretien_Click()
Dim Ctrl
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = ""
Next Ctrl
MontantEntretien.SetFocus
ValiderEntretien.Visible = True
ModifierEntretien.Visible = False
MontantEntretien.Locked = False
MontantEntretien.BackColor = &HC0C0FF
End Sub
J'ai déja le message de saisie d'une valeur numéric, donc je fais ok, et si
je retente de mettre une lettre cela me pose deux fois le même question.
Donc ma question serai, comment je peu faire ce test à la saisie, dans mon
TextBox.
Suite a cela, j'ai un UserFor, qui contiendrai plusieurs TextBox dans
lesquels je voudrais faire ce test, es-ce possible de faire ce test sur
plusieurs TextBox sans être obligé d'écrit 15 fois la même procédure un peu
comme pour effacer les TextBox :
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = ""
Next Ctrl
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
Michel Pierron
Bonsoir Ouille; Une fonction pour tous les TextBox:
Private Sub TextBox1_Change() Me.TextBox1 = CleanChain(Me.TextBox1) End Sub
Private Function CleanChain(Chain As String) As String Const Cars As String = "0123456789,." Dim L As String * 1, i As Integer For i = 1 To Len(Chain) L = Mid(Chain, i, 1) Select Case L Case ",", "." L = Application.International(xlDecimalSeparator) If InStr(1, CleanChain, L) Then GoTo 1 End Select If InStr(1, Cars, L) Then CleanChain = CleanChain & L 1: Next i End Function
MP
"Ouille" a écrit dans le message de news:
Bonsoir a toutes et tous,
Je me doute que le sujet a été plusieurs abordé, mais là, je pense qu'il diffère un peu, (mais pas beaucoup,lol).
Je connais ce code pour obliger a la validation une valeur Numérique :
'=========Message si TextBox3 non numérique If Not IsNumeric(MontantEntretien) Then MsgBox "Vous devez rentrer des chiffres uniquement", vbCritical, "Attention
!" MontantEntretien = "" MontantEntretien.SetFocus Exit Sub End If
Mais deux cas se pésentent pour moi,
Le premier, c'est que je voudrais que cela réagisse directement à la saisie,
chose que j'ai tenté en mettant ce code dans :
Private Sub MontantEntretien_Change() End Sub
Mais là, des que je fais modifier dan smon UserForm :
Private Sub ModifierEntretien_Click() Dim Ctrl For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = "" Next Ctrl MontantEntretien.SetFocus ValiderEntretien.Visible = True ModifierEntretien.Visible = False MontantEntretien.Locked = False MontantEntretien.BackColor = &HC0C0FF End Sub
J'ai déja le message de saisie d'une valeur numéric, donc je fais ok, et si
je retente de mettre une lettre cela me pose deux fois le même question.
Donc ma question serai, comment je peu faire ce test à la saisie, dans mon TextBox.
Suite a cela, j'ai un UserFor, qui contiendrai plusieurs TextBox dans lesquels je voudrais faire ce test, es-ce possible de faire ce test sur plusieurs TextBox sans être obligé d'écrit 15 fois la même procédure un peu
comme pour effacer les TextBox :
For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = "" Next Ctrl
Je vous remercie par avance de votre aide, Ouille
Bonsoir Ouille;
Une fonction pour tous les TextBox:
Private Sub TextBox1_Change()
Me.TextBox1 = CleanChain(Me.TextBox1)
End Sub
Private Function CleanChain(Chain As String) As String
Const Cars As String = "0123456789,."
Dim L As String * 1, i As Integer
For i = 1 To Len(Chain)
L = Mid(Chain, i, 1)
Select Case L
Case ",", "."
L = Application.International(xlDecimalSeparator)
If InStr(1, CleanChain, L) Then GoTo 1
End Select
If InStr(1, Cars, L) Then CleanChain = CleanChain & L
1: Next i
End Function
MP
"Ouille" <jacques-zeziola@wanadoo.fr> a écrit dans le message de
news:ups9RgpbEHA.1548@TK2MSFTNGP12.phx.gbl...
Bonsoir a toutes et tous,
Je me doute que le sujet a été plusieurs abordé, mais là, je pense qu'il
diffère un peu, (mais pas beaucoup,lol).
Je connais ce code pour obliger a la validation une valeur Numérique :
'=========Message si TextBox3 non numérique
If Not IsNumeric(MontantEntretien) Then
MsgBox "Vous devez rentrer des chiffres uniquement", vbCritical,
"Attention
!"
MontantEntretien = ""
MontantEntretien.SetFocus
Exit Sub
End If
Mais deux cas se pésentent pour moi,
Le premier, c'est que je voudrais que cela réagisse directement à la
saisie,
chose que j'ai tenté en mettant ce code dans :
Private Sub MontantEntretien_Change()
End Sub
Mais là, des que je fais modifier dan smon UserForm :
Private Sub ModifierEntretien_Click()
Dim Ctrl
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = ""
Next Ctrl
MontantEntretien.SetFocus
ValiderEntretien.Visible = True
ModifierEntretien.Visible = False
MontantEntretien.Locked = False
MontantEntretien.BackColor = &HC0C0FF
End Sub
J'ai déja le message de saisie d'une valeur numéric, donc je fais ok, et
si
je retente de mettre une lettre cela me pose deux fois le même question.
Donc ma question serai, comment je peu faire ce test à la saisie, dans mon
TextBox.
Suite a cela, j'ai un UserFor, qui contiendrai plusieurs TextBox dans
lesquels je voudrais faire ce test, es-ce possible de faire ce test sur
plusieurs TextBox sans être obligé d'écrit 15 fois la même procédure un
peu
comme pour effacer les TextBox :
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = ""
Next Ctrl
Bonsoir Ouille; Une fonction pour tous les TextBox:
Private Sub TextBox1_Change() Me.TextBox1 = CleanChain(Me.TextBox1) End Sub
Private Function CleanChain(Chain As String) As String Const Cars As String = "0123456789,." Dim L As String * 1, i As Integer For i = 1 To Len(Chain) L = Mid(Chain, i, 1) Select Case L Case ",", "." L = Application.International(xlDecimalSeparator) If InStr(1, CleanChain, L) Then GoTo 1 End Select If InStr(1, Cars, L) Then CleanChain = CleanChain & L 1: Next i End Function
MP
"Ouille" a écrit dans le message de news:
Bonsoir a toutes et tous,
Je me doute que le sujet a été plusieurs abordé, mais là, je pense qu'il diffère un peu, (mais pas beaucoup,lol).
Je connais ce code pour obliger a la validation une valeur Numérique :
'=========Message si TextBox3 non numérique If Not IsNumeric(MontantEntretien) Then MsgBox "Vous devez rentrer des chiffres uniquement", vbCritical, "Attention
!" MontantEntretien = "" MontantEntretien.SetFocus Exit Sub End If
Mais deux cas se pésentent pour moi,
Le premier, c'est que je voudrais que cela réagisse directement à la saisie,
chose que j'ai tenté en mettant ce code dans :
Private Sub MontantEntretien_Change() End Sub
Mais là, des que je fais modifier dan smon UserForm :
Private Sub ModifierEntretien_Click() Dim Ctrl For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = "" Next Ctrl MontantEntretien.SetFocus ValiderEntretien.Visible = True ModifierEntretien.Visible = False MontantEntretien.Locked = False MontantEntretien.BackColor = &HC0C0FF End Sub
J'ai déja le message de saisie d'une valeur numéric, donc je fais ok, et si
je retente de mettre une lettre cela me pose deux fois le même question.
Donc ma question serai, comment je peu faire ce test à la saisie, dans mon TextBox.
Suite a cela, j'ai un UserFor, qui contiendrai plusieurs TextBox dans lesquels je voudrais faire ce test, es-ce possible de faire ce test sur plusieurs TextBox sans être obligé d'écrit 15 fois la même procédure un peu
comme pour effacer les TextBox :
For Each Ctrl In Me.Controls If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = "" Next Ctrl