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

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

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.