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.
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
Jacques93
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.
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
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
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.
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
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