Gestion complète de textbox via module de classe

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Au cours d'un précédent post, JNP vient de proposer d'étudier un cas qui m'intéresse particulièrement. Je n'ai donc pas voulu rater cette occasion.

Le principe : créer des modules de classe gérant entièrement les entrées / sorties / format et saisie de Textbox.

Pourquoi se servir des modules de classe ?
Car c'est tout simplement le moyen le plus simple d'effectuer ces taches dès qu'une application devient un peu conséquente.
On évite ainsi de multiplier inutilement les lignes de code.

J'ai réussi toutes ces opérations sauf les entrées / sorties qui ne sont "nativement" gérées par les modules de classe.

Une solution avait été proposée ici mais impossible de l'adapter. Je coince.

J'ai donc préparé un petit fichier exemple pour travailler plus facilement.

Pour ceux que ça intéresse, ce petit fichier est un petite "boite à outils" assez sympa pour ceux qui aiment les contrôles de saisies.

Vous y trouverez 5 formats "classiques" (Dates, nombre entier, Euros, NOM et Prénom) que j 'ai tenté de sécuriser au maximum. Le contrôle date est particulièrement élaboré et accepte pas de format de saisie différents.

Vous y trouverez également une petite fonction sympa qui permet de gérer l'affichage d'un message d'erreur dans un contrôle Label. Essayer là c'est sympa !

Vous pouvez même en profiter pour me donner votre avis sur ces contrôles et signaler éventuellement les erreurs.

Merci à vous tous de votre collaboration.
 

Pièces jointes

  • Contrôles de saisie.xls
    83 KB · Affichages: 261
  • Contrôles de saisie.xls
    83 KB · Affichages: 244
  • Contrôles de saisie.xls
    83 KB · Affichages: 250

laetitia90

XLDnaute Barbatruc
Re : Gestion complète de textbox via module de classe

bonjour GeoTrouvePas :):)
question a mon avis quel est l'intêret dans ce cas bien précis de passer par une class
5 textboxs dans user une class par textbox???
pour moi une class est interessante pour une groupe de ...box
tu te limites volontairement les possibilitées 16 possibilitées dans user 12 dans une class
& surtout pas comme dit dans autre post pas exit & enter sans passer par du code VB GetFocus & LostFocus assez delicat a mettre en place enfin pour moi!!!
va ton gagner beaucoup de lignes de codes ??? sans passer par une "usine a gaz"

ps: je crois qu'on c'etait croiser sur une sujet similaire ou l'ami hasco donnait une solution similaire mais retrouve pas le post
 
Dernière édition:

GeoTrouvePas

XLDnaute Impliqué
Re : Gestion complète de textbox via module de classe

Bonjour Laetitia

Ce n'est qu'un petit fichier démo. A la base je m'étais lancé là dedans pour une application qui contient plus d'une trentainte de userform, des milliers de contrôles et 13 000 lignes de codes (réduit depuis à 10 000). J'ai même un userform avec plus de 450 contrôles différents.

Etant donné que je ne fais que du contrôle de saisie, les évènements Enter/Exit/Change/KeyPress me suffisent.

Donc oui, l'usage de module de classe est, à mon avis, justifiée et permettrait surtout de ne pas transformer cette application en usine à gaz.

(Tiens d'ailleurs tu pourras retrouver dans le fichier test la petite procédure Alerte que tu m'avais aidé à concevoir).
 

JNP

XLDnaute Barbatruc
Re : Gestion complète de textbox via module de classe

Re :),
Bon, au niveau de l'Exit, le LostFocus fonctionne. J'ai pas trop cherché pour l'Enter, vu que je ne vois pas l'intérêt de formater une TextBox vide en Enter :confused:...
Jette un oeil et dis nous :p...
Bonne soirée :cool:
 

Pièces jointes

  • Contrôles de saisie(1).xls
    106.5 KB · Affichages: 233

Charly88

XLDnaute Occasionnel
Re : Gestion complète de textbox via module de classe

Ce n'est qu'un petit fichier démo. A la base je m'étais lancé là dedans pour une application qui contient plus d'une trentainte de userform, des milliers de contrôles et 13 000 lignes de codes (réduit depuis à 10 000). J'ai même un userform avec plus de 450 contrôles différents.
fear.gif
fear.gif
fear.gif




On parle toujours d'excel ?
 

GeoTrouvePas

XLDnaute Impliqué
Re : Gestion complète de textbox via module de classe

Merci JNP !

Je comprends pas encore tout mais je vais y arriver. C'est pas vraiment fait pour un vendredi soir, demain, ça ira mieux ^^.

J'espère qu'après ça je vais arriver à me faire ma boite à outils : un module normal et des modules de classe à intégrer dans mes applications et avec lesquels je n'aurai plus qu'à tagger mes textbox pour déterminer les contrôles à faire en entrée, sortie, saisie etc...

Un sacré gain de temps et de code.

En tout cas, un ENORME merci à toi JNP !

On parle toujours d'excel ?

Bonne réflexion !
Disons que c'est un petit tableau sur lequel on m'a demandé de rajouter ceci puis celà et de fil en aiguille, on en arrive à une application qui n'a plus du tout adapté à VBA
 

JNP

XLDnaute Barbatruc
Re : Gestion complète de textbox via module de classe

Re :),
Dans le code, je n'ai utilisé que le premier chiffre de droite
Code:
Private Sub USF_LostFocus(ByVal Txtbx As String)
Select Case Right(Txtbx, 1)
'Sortie d'un textbox "Date"
Case 1
    If SortieTxTVerifDate(Me.Controls(Txtbx)) Then Me.Controls(Txtbx).SetFocus
'Entrée et sortie d'un textbox "Euros
Case 3
    If SortieTxTVerifEuros(Me.Controls(Txtbx)) = True Then Me.Controls(Txtbx).SetFocus
End Select
End Sub
mais si tu pars sur des codes à 3 chiffres (TextBox001 à TextBox999), en modifiant
Code:
Select Case Right(Txtbx, 1)
en
Code:
Select Case Right(Txtbx, 3)
tu peux utiliser
Code:
Select Case Right(Txtbx, 3) * 1
'Sortie d'un textbox "Date"
Case 1 To 99
If SortieTxTVerifDate(Me.Controls(Txtbx)) Then Me.Controls(Txtbx).SetFocus
'Entrée et sortie d'un textbox "Euros
Case 300 To 399
If SortieTxTVerifEuros(Me.Controls(Txtbx)) = True Then Me.Controls(Txtbx).SetFocus
End Select
Bonne soirée :cool:
 

GeoTrouvePas

XLDnaute Impliqué
Re : Gestion complète de textbox via module de classe

Oui c'est la seule partie du code que j'ai clairement compris ^^
J'ai bien vu que tu faisais ton identification par rapport au nom du textbox.
Vu que je veux en faire un outil "générique" utilisable dans mes futurs applications, je vais essayer d'en faire le maximum en me basant sur les Tag des textbox.
Je voudrais arriver à me faire un "package" de modules à intégrer dans chaque nouvelle appli, avoir le strict minimum de code à rajouter dans chaque userform et simplement mettre des tag "Euros", "Date", "Entier"... sur mes textbox pour gérer toutes les entrées / sorties / saisies et formats.

ça pourrait aussi faire un bel utilitaire à partager.
 

Staple1600

XLDnaute Barbatruc
Re : Gestion complète de textbox via module de classe

Bonsoir le fil

...
A la base je m'étais lancé là dedans pour une application qui contient plus d'une trentainte de userform, des milliers de contrôles et 13 000 lignes de codes (réduit depuis à 10 000). J'ai même un userform avec plus de 450 contrôles différents...

En lisant cela, l'usine à gaz est déjà là, non ? (sans vouloir te vexer)

Par curiosité, quelle est la taille en MO de ton appli ?
 

GeoTrouvePas

XLDnaute Impliqué
Re : Gestion complète de textbox via module de classe

Re Staple,

En lisant cela, l'usine à gaz est déjà là, non ? (sans vouloir te vexer)

ça ne me vexe pas du tout, tu as tout à fait raison. J'ai fait de mon mieux pour organiser le code d'un façon clair, faire des procédures courtes, multiplier les petites fonctions etc... J'ai d'ailleurs grandement réduit le nombre de lignes de code.
Aujourd'hui j'arrive à m'y retrouver mais c'est limite.

Le fichier fait actuellement 2,55 Mo, c'est raisonnable. Il tourne de manière très fluide sur des petites bécanes d'entreprise.
 

GeoTrouvePas

XLDnaute Impliqué
Re : Gestion complète de textbox via module de classe

Mais c'est que je ferais presque traiter de menteur ma parole !
Si tu veux tout savoir : 3 feuilles, 31 userform (certains n'ont que 4 ou 5 contrôles), 24 modules, 25 modules de classe, 9 770 lignes de code, 1 062 contrôles et 654 procédures. Le tout pour 2 677 248 octets (après avoir passé un petit coup de vba code cleaner quand même !)

ça te suffit ou il te faut des captures d'écran, un constat d'huissier etc... ?
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote