Module de Classe

Banzai64

XLDnaute Accro
Bonjour

Un petit (grand) problème

Voilà, ayant à gérer un Usf avec environ 300 contrôles (qui ne sont pas tous affichés en même temps).
Pour gérer les TextBox (environ 120) je suis passé par un module de classe

Code:
Public WithEvents TxTBox As MSForms.textbox
(question subsidiaire: Pourquoi textbox reste en minuscule)

Donc j'aimerai intercepter l'évènement Exit afin de formater le TextBox avec Format(TxtBox.Value,"0.00")

Mais cet évènement n'existe pas dans le module de classe quand on choisit TxtBox dans la liste déroulante en haut gauche et la liste des évènements dans la liste déroulante en haut droite

Voir image jointe

Module de Classe.jpg

Est-ce qu'il y a un moyen de résoudre ce problème ?

Si besoin est je pourrais (enfin je crois) fournir un fichier

Merci de votre temps passé à lire ce post et de toute aide apportée
 

Banzai64

XLDnaute Accro
Re : Module de Classe

Bonjour

Une petite précision sans mettre en doute la qualité de vos suggestions

Au sujet de ce que dit Fo_rum

laetitia90, est-ce ma version (2002) qui transforme certains nombres en 0,.. ou n'applique pas le format ?

Dans le programme de Laetitia90 j'ai remplacé dans la chaine "0123456789." le point par une virgule : "0123456789,"

car lors du formatage il se passait des trucs bizarres
Essayez 2.5 par exemple

Habitude m'as indiqué une autre solution pour éviter cette chaine c'est de tester si le contenu est "Isnumeric" et de traiter en conséquence.

Bonne journée
 

YANN-56

XLDnaute Barbatruc
Re : Module de Classe

Bonjour Staple, et à ceux qui passeront par ici,

Ancien élève en faculté d'Arts Plastiques, étant confronté à un sujet
qui ne me plaisait pas, j'ai barbouillé mon épreuve avec du vert de Véronèse
et du rose Tyrien... Beurk, et re-Beurk! .... J'ai eu la meilleure note de la promo!!! :D

J'ai tenté de réitérer avec mon exemple... Sauf qu'ici; j'ai eu une bulle! :mad:

Comme quoi être bon en VBA ne peut être un don du ciel... Il faut bosser!

Amicalement, et Bepred Breiz

Yann

P.S. A l'attention de Banzai

Habitude m'as indiqué une autre solution pour éviter cette chaine c'est de tester
si le contenu est "Isnumeric" et de traiter en conséquence

N'était-ce pas là la suite que je t'ai suggérée.
Mais peut-être n'ai-je pas tout compris...
 
Dernière édition:

Fo_rum

XLDnaute Accro
Re : Module de Classe

Salut

Merci Banzai64 pour la confirmation des trucs bizarres. Je me disais aussi …

J’ai déjà remarqué qu’en ouvrant des fichiers de type « .xlsm », mon système subissait des transformations inopportunes (comme la gestion des touches Majuscule/Minuscules).
J’ai pensé que c’était peut-être le cas ici.

Pour revenir à ma version, j’ai eu d’autres problèmes avec un clavier «numérique » branché sur un portable :
« . ou , et avec quelle configuration ?» telle est la question.
J’ai adapté une réponse (pour régler mes ennuis) :
Code:
Private Sub txt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  If (KeyAscii < 48 And KeyAscii <> 46 And KeyAscii <> 44) Or KeyAscii > 57 Then KeyAscii = 0
  If KeyAscii = 46 Or KeyAscii = 44 Then KeyAscii = Asc(Application.International(xlDecimalSeparator))
End Sub

Son utilisation avec le dernier fichier de laetitia90* le rend performant.

* excuse moi pour cette interpellation inappropriée mais c'était pour le débat.
 

Banzai64

XLDnaute Accro
Re : Module de Classe

Bonjour Yann-56
Bonjour le Fil
Bonjour le Forum


J'espère que cela ne va pas entrainer une polémique exagérée

Yann-56
Alors je suis désolé de ne pas avoir compris "la suggestion" que tu avais émise.
Ce n'était en aucune façon de ne pas reconnaitre ton excellent travail (entre autre : La loupe)
Peut-être la fatigue, l'age ....

Je te remercie de l'aide que tu m'as apportée

Et à tous, je souhaite une bonne journée
 

laetitia90

XLDnaute Barbatruc
Re : Module de Classe

rebonjour tous

par curiosite j'ai cree directement un fichier avec excel2003 avec xp
& non avec 2007 & seven 64 pour voir le pb en tapant 2.5 pas constate de pb..

entre autres... en régle generale j'essaie toujours d'avoir une approche la plus simple possible dans mes posts. bien sur!!! "derriere" il faut construire mettre des conditions cherche les bogues possibles
dans ce cas precis il faut gerer si l'utilisateur du progra... commence par un point,
suite de zeros , plusieurs points. l'ami forum a ammene de bonne base de reflexion
cela est tres facile a gerer. de la on va s'affranchir de savoir si l'expression est numerique ou non ect...
je vois que sur ce sujet c'est un peu la guerre de savoir qui fait bien .pas bien
je veus pas rentrer dans cette polémique cela me rappel de mauvais souvenirs je préfere disparaitre
 

Staple1600

XLDnaute Barbatruc
Re : Module de Classe

Bonsoir à toute la classe ;)


Comme promis précédemment, je repasse ici

laetitia90
Voici l'idée (ou plutôt la piste que j'ai tenté de suivre)
(Il y avait longtemps que je n'avais pas tâté des expressions régulières)

Code:
Private Sub TextBox1_Change()
With CreateObject("VBScript.RegExp")
    .Pattern = "\D": .Global = True
    TextBox1.Value = _
        IIf(.test(TextBox1.Text), _
        .Replace(TextBox1.Text, ""), _
        TextBox1)
End With
End Sub

Avec le code ci-dessus, on ne peut saisir que des chiffres dans le TextBox
Il reste maintenant à trouver le bon pattern pour coller à la question initiale
formater le TextBox avec Format(TxtBox.Value,"0.00")
PS: JNP, si tu passes par ici ;)
 
Dernière édition:

Discussions similaires

Réponses
29
Affichages
1 K

Statistiques des forums

Discussions
312 405
Messages
2 088 128
Membres
103 733
dernier inscrit
MARIE 59