boucle sur controle pour une virgule à la place du point

H

Hervé

Guest
Bonsoir tout le monde

je travaille sur un userform avec une quarantaine de textbox.

Je recherche une combine pour lors de la validation des données, vérifier en une seule boucle si des points on été saisie en lieu et place de virgule dans les controles (textbox ou combobox).

j'avais pensé à ceci (merci de pas vous marrer) :

dim ctrl as object
For Each ctrl In UserForm3.Controls
If IsNumeric(ctrl) = True Then
ctrl = Application.WorksheetFunction.Substitute(ctrl, ".", ",")
End If
Next ctrl

mais ceci ne marche pas (et cours encore moins).

Si vous pouviez me donner une solution globale pour éviter la saisie du point au lieu de la virgule ou me renvoyer vers un lien.

D'avance je vous en remercie

Salut
Hervé
 
H

Hervé

Guest
re

petite précision, je pense que l'on doit passer par un module de classe, type :

Public WithEvents TxtBox As MSForms.TextBox
Private Sub TxtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = Asc(",") Then KeyAscii = Asc(".")
End Sub

mais ensuite, au niveau du module, je ne sais pas comment faire référence à ce code.

d'avance merci

Salut
Hervé
 
M

myDearFriend

Guest
Bonsoir Hervé, le Forum.


Ci-joint un exemple avec un module de classe qui remplacera le "Point" en "Virgule" lors de la saisie dans chacun des 36 TextBox...


Cordialement.

Didier_mDF
myDearFriend-3.gif
 

Pièces jointes

  • ClassPointEnVirgule.zip
    15.9 KB · Affichages: 157
  • ClassPointEnVirgule.zip
    15.9 KB · Affichages: 155
  • ClassPointEnVirgule.zip
    15.9 KB · Affichages: 169
Y

Yeahou

Guest
Bonjour Hervé, didier, Le forum

Si tu dois appliquer sur l'ensemble des texbox, la solution de Didier.

Si tes besoins sont plus ciblés sur certaines texbox et non pas toutes, une simple macro change sur les textbox concernées suffit pour gérer en temps réel.

Private Sub TextBox1_Change()
TextBox1.Value = Replace(TextBox1.Value, ".", ",", 1)
End Sub

ou alors par groupe en ponctuel

For compteur = 1 To 46
UserForm3.Controls("TextBox" & compteur).Value = Replace(UserForm3.Controls("TextBox" & compteur).Value, ".", ",", 1)
Next compteur

Cordialement, A+
 

Discussions similaires

K
Réponses
7
Affichages
3 K

Statistiques des forums

Discussions
312 177
Messages
2 085 973
Membres
103 073
dernier inscrit
MSCHOE16