[vba uniquement] saisies contrôlées (un peu comme avec maskededit)

Soyez le premier à donner votre avis sur cette source.

Vue 3 468 fois - Téléchargée 415 fois

Description

Bonjour,

Liminaire :
Le code que je vais montrer ici a une finalité que je désapprouve personnellement avec vigueur.

J'ai eu l'occasion d'insister sans relâche sur cet aspect dans la discussion qui, ouverte sur ce forum il y a peu,
avait pour objet la "construction d'une espèce d'erzats" tendant à imiter le comportement d'un contrôle MaskEdit, à savoir :
des saisies contrôlées en cours-même de saisie et assorties, tout au long de la saisie, de "_" pour y remplacer les caractères non encore saisis et/ou encore attendus. Le tout sous ... un outil qui ne se prête pas particulièrement à ce sport-là : VBA !

J'ai dit et redit dans la discussion dont il s'agit qu'un tel code aboutirait inévitablement à une usine à gaz, mais que, si l'on "s'y mettait" malgré tout, il convenait au moins de :

1) ne pas faire une usine à gaz différente pour chaque masque de saisie possible ! Tenter au moins un code valable pour tout masque !
2) "réduire" au maximum l'aspect "usine à gaz". Il est inévitable lorsque l'on jongle ainsi, mais qu'on ne fasse, si on insiste, qu'un "atelier à gaz" et non une "super-usine à gaz"

Face à une obstination qui continue à demeurer un mystère pour moi, j'ai en dépit de ma "répugnance" pour de telles pratiques, décidé de m'y mettre, mais dans ce cas :

- en considérant que le point important n'était pas l'utilité, mais la démarche d'un tel "jonglage"
- en considérant que si l'on tenait à "faire son petit truc perso" plutôt que d'utiliser des activex existants (voire tout bêtement un contrôle et une mise en forme après saisie), on ne pouvait, dans le même temps, attendre que d'autres fassent ce "petit truc" que l'on ne sait faire soi-même (question de paradoxe fondamental)
- en décidant donc, puisque l'on dit ne pas être effrayé par des acrobaties et jonglages en tous genres, de ne pas accompagner mes lignes de codes de commentaires (que je mets habituellement dans mes sources) permettant de suivre les démarches. Et mon code ne s'appuyant principalement que sur des astuces, des acrobaties en tous genres et des jonglages, les "choses" vont être dures pour ceux qui voudront analyser. ===>>> C'est une décision réfléchie que j'ai prise délibérément.
Pour résumer ce liminaire : ce code a une utilité que je conteste, mais l'avantage de forcer les "pistards" à travailler s'il veulent le comprendre. Il n'est là que pour cela. C'est son seul véritable intérêt.

Exposé de ses fonctionnalités :
- saisies contrôlées s'apparentant à celles qu'offrent certains activex, dont le composant MaskEdit
- un seul code pour différents masques de saisie, avec 7 exemples exposés.
- on ne peut quitter une textbox que si convenablement remplie ou vide
- on ne peut corriger les saisies que depuis la droite vers la gauche, que ce soit avec la touche backspace ou la touche suppr (avec ou non sélection).

- un traitement assez particulier (et qui, lui, peut avoir un intérêt) pour la saisie des mots de passe, en précisant que :
--- le traitement est différent :
------ en mode création du mot de passe. Il permet alors de "forcer" par exemple l'utilisateur à insérer dans son mot de
passe un certain nombre de numériques, ce qui évite les mots de passe du genre "Denise", "Bidule", etc ...
------ en mode identification. Dans ce mode :
a) celui qui le saisit n'a plus le moindre repère, tant en ce qui concerne sa longueur qu'en ce qui concerne sa structure forcée.
b) les moulinettes habituelles (pour "craquer" les mots de passe) se heurtent à un obstacle invisible et voient leur tâche considérablement plus compliquée.

Pistes pour ceux qui chercheraient à comprendre :

1) il y a un fantôme assez crapuleux qui sévit tout au long.
2) j'ai écrit uniquement pour VBA. Le procédé utilisé ne pourrait être le même sous VB6 (pas transposable, donc, en VB6). Sous VB6, ce serait toralement autrement.

Bonne chance aux vrais pistards.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Renfield
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56 -
tests en vrac, commentaires qui ne le sont pas moins

touche Ctrl mangée, si on presse, on perd la selection
tes masques ne resistent pas a un Ctrl+V de caractères interdits
pas simple, voire impossible (testé dans l'alpha 6) de placer le caret a l'endroit souhaité
dans l'alpha 6. Je saisi des caractères Alt+Tab je reviens sur ma Form Excel, des caractères chevauchent les autres... (ton fantome ?)
Euh... le Alt+Tab tue toute la verif, d'ailleurs :/

Pas testé plus loin, m'enfin

Je suis d'accord que c'est souvent des usines a gaz... mais surtout, et puisqu'après tout, l'user ne voit pas la code, le principal default et le coté intrusif de la chose !

une donnée, pour etre correctement interpretée par l'utilisateur doit être formatée.
Une attention particulière sera portée aux parametres regionnaux (dates, montants, etc.)

mais la saisie de l'utilisateur se doit d'etre libre.
controlée, mais libre.

Il ne faut pas non plus bloquer l'utilisateur dans une textbox, sous pretexte qu'elle a mal été remplie.
saisie libre, donc, avec vérification et formatage lorsque l'user quitte la zone.

J'ai bien lu ton laïus et bien compris que tu jouais ici. Que tu n'affectionne pas plus que moi ce genre de verrou que l'on tente parfois de placer sur la saisie...
Comme je le faisait remarquer, un simple Ctrl+V suffit bien souvent a mettre a mal les tests de saisie.
Mieux vaut alors ne contrôler le texte qu'a la sortie de focus.

Très bon exemple, donc, à ne pas suivre ^^
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212 -
Bonjour, Renfield,

Tu as tout compris du but réel de ce dépôt et du commentaire dont il est assorti.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.