Textbox exclusivement pour des chiffres

Le
lomer
Bonjour
dans un userform en Word, j'ai plusieurs Textbox qui servent à mettre des
chiffres. Chaque Textbox doit être prgrammé de la façon suivante :

Private Sub Textbox36_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Si la valeur n'est pas comprise entre 0 et 9 et qu'elle n'est pas un
backspace
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8) Then
KeyAscii = 0 'on annule la pression sur la touche
Textbox36.Value = 0
End If
End Sub

Mais en raison du nombre de Textbox concerné (30) je me demandais s' il
n'existait pas une méthode (fonction) permettant de programmer tous les
Textbox en même temps. Quelque chose du genre For i = X to Y
Merci par avance de l'aide que vous pourrez me donner.

--
lomer
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques93
Le #1597385
Bonjour lomer,
Bonjour
dans un userform en Word, j'ai plusieurs Textbox qui servent à mettre des
chiffres. Chaque Textbox doit être prgrammé de la façon suivante :

Private Sub Textbox36_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Si la valeur n'est pas comprise entre 0 et 9 et qu'elle n'est pas un
backspace
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8) Then
KeyAscii = 0 'on annule la pression sur la touche
Textbox36.Value = 0
End If
End Sub

Mais en raison du nombre de Textbox concerné (30) je me demandais s' il
n'existait pas une méthode (fonction) permettant de programmer tous les
Textbox en même temps. Quelque chose du genre For i = X to Y
Merci par avance de l'aide que vous pourrez me donner.



Comme en VBA il n'est pas possible d'indexer les contrôles, si tu peux
effectuer le contrôle à la fermeture du formulraire, et si tu n'utilise
pas la propriété Tag des textbox à d'autres fins, le code qui suit
devrai convenir :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim c As Control

For Each c In Me.Controls
If TypeOf c Is TextBox Then
If c.Tag = "N" And Len(c.Text) > 0 _
And c.Text <> CStr(Val(c.Text)) Then
MsgBox " Ce champ doit être numérique"
c.SelStart = 0
c.SelLength = Len(c.Text)
c.SetFocus
Cancel = True
Exit Sub
End If
End If
Next
End Sub


--
Cordialement,

Jacques.

lomer
Le #1596868
Merci cela pourrait effectivement convenir car je n'utilise pas le Tag.
je vais l'essayer au plus vite
--
lomer



Bonjour lomer,
Bonjour
dans un userform en Word, j'ai plusieurs Textbox qui servent à mettre des
chiffres. Chaque Textbox doit être prgrammé de la façon suivante :

Private Sub Textbox36_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Si la valeur n'est pas comprise entre 0 et 9 et qu'elle n'est pas un
backspace
If Not ((KeyAscii >= 48 And KeyAscii <= 57) Or KeyAscii = 8) Then
KeyAscii = 0 'on annule la pression sur la touche
Textbox36.Value = 0
End If
End Sub

Mais en raison du nombre de Textbox concerné (30) je me demandais s' il
n'existait pas une méthode (fonction) permettant de programmer tous les
Textbox en même temps. Quelque chose du genre For i = X to Y
Merci par avance de l'aide que vous pourrez me donner.



Comme en VBA il n'est pas possible d'indexer les contrôles, si tu peux
effectuer le contrôle à la fermeture du formulraire, et si tu n'utilise
pas la propriété Tag des textbox à d'autres fins, le code qui suit
devrai convenir :

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim c As Control

For Each c In Me.Controls
If TypeOf c Is TextBox Then
If c.Tag = "N" And Len(c.Text) > 0 _
And c.Text <> CStr(Val(c.Text)) Then
MsgBox " Ce champ doit être numérique"
c.SelStart = 0
c.SelLength = Len(c.Text)
c.SetFocus
Cancel = True
Exit Sub
End If
End If
Next
End Sub


--
Cordialement,

Jacques.




Publicité
Poster une réponse
Anonyme