Effacement caractère dans une textbox

Bonjour à tous,

Je souhaite faciliter la saisie d'une date dans une textbox. J'ai donc limité les caractères autorisés (seulement numériques) et j'ai fait en sorte que lorsqu'on arrive aux 3ème et 6ème caractères, le caractère "/" s'affiche automatiquement.

Mon problème se situe lorsque je veux supprimer des caractères (erreur dans la saisie), lorsque je veux n'effacer que le caractère avant le "/", cela efface les 2 caractères avant le "/". J'ai essayer en pas à pas de trouver d'où venait le problème, je vois bien à quel moment ça ne va pas, mais n'arrive pas à corriger.

Pouvez-vous m'aider?

Fichier test en PJ

12test.xlsm (18.57 Ko)

Merci beaucoup

Bonsoir,

Une proposition en PJ, en utilisant un calendrier (récupéré sur ce forum, fait par un membre actif).

Bouben

15calendrierz.xlsm (25.09 Ko)

Merci bouben, c'était une solution que j'avais envisagée (mais pas encore mise en pratique).

Cela dit, je reste preneur si quelqu'un arrive à m'expliquer pourquoi cela efface 2 caractères et non un seul...

Bonjour, toujours personne pour m'aider à comprendre pourquoi le code se comporte comme ça et ainsi m'aider à progresser un peu plus?

Merci

Bonjour Remy_Staps,

En retour un petit fichier exemple selon ton besoin. A adapter sur le tien.

Voir notes sur la 1ière feuille ainsi que le code de cette même feuille dans l'éditeur VBA.

Bons tests, bonne continuation.

12textboxdate.xlsm (22.39 Ko)

Bonjour,

Merci pour vos participations. Merci X Cellus pour ton fichier. Cependant, je ne comprend toujours pas pourquoi j'ai deux caractères qui s'effacent et non pas un seul... Des idées?

Merci

Bonsoir,

le soucis c'est que vous avez des actions qui "s'additionnent" lors de l'effacement :

Private Sub textbox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

et

Private Sub textbox_Change()

voir

Private Sub textbox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Ce qui engendre des doubles boucles qui peuvent conduire à ce type "d'incompréhension".

J'ai modifié le code du KeyDown afin de faire basculer un interrupteur en vrai ou faux afin d'éviter une double boucle avec Textbox_Change

Le fichier modifié :

4test-lrd.xlsm (24.64 Ko)

@ bientôt

LouReeD

Souvent avec les USF il faut faire appel à ce genre d'interrupteur car sur ces derniers le "Application.EnableEvents" n'a pas d'effet.

On le remplace avantageusement avec une variable booléenne qui permettra ou pas d'effectuer l'opération demandée.

@ bientôt

LouReeD

Je peux enfin prendre le temps de jeter un coup d’œil aux modifications, je comprend mieux le principe de l'interrupteur. Merci beaucoup, j'en apprend un peu plus.

Rechercher des sujets similaires à "effacement caractere textbox"