boucle sur controle pour une virgule à la place du point

  • Initiateur de la discussion Initiateur de la discussion Hervé
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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é
 
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é
 
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

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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

K
Réponses
7
Affichages
3 K
Retour