re
non job ca ne remplace pas
comme tu peux le voir quand j'ai retapé "1" dans la sélection çà a fait revenir tout ce qui suit (donc suppression de 2 caractères
et le selstart est reparti au 1er caractere masque dispo
pour que nous nous comprenions
cahier des charge
masque de saisie toute forme doit être accepté
la rédaction avance fur et a mesure
la touche back(retour en arrière) efface le précèdent et remet le caractère du mask si sellength=0
si sellength>1 alors remet les caractères du masque SANS!! ramener ce qui suit (chez toi pas ok et impossible avec ta méthode double boucle puisque le caractères est tapé et c'est l’événement change donc l'action est entériné)
les touches autorisée doivent inscrire le caractère ET!!! les caractères correspondant au sellength (ca pas ok chez toi est impossible avec cette méthode )
exemple J'ai
ABCDEFGHIJKL je sélectionne au milieu du texte
DEFG et tape "
Z" ca doit me marquer
"ABCZ---HIJ" à l'endroit même de la sélection
et le selstart se positionne après "Z"
en gros pour te la faire courte le textbox doit se comporter comme si chaque caractères était un textbox
et ta méthode double boucle sur le replace du masque et redistribution ne pourra jamais le permettre
ma méthode est simple
elle se base sur l'interception du keycode et application dans variable text et invalidation du keycode (et oui keycode vaut toujours 0)
on a ainsi le caracteres entériné MAIS !! dans la variable text contenant le textbox en l'etat
elle se base aussi sur le selstart et sellength (+1 pour obtenir le mid) et replacement par le même mid du mask et vise et verca
et cela avec les touches( alpha numérique , pavé numérique , 8, 46 , 37, 39 , 13 et/ou 9 pour sortie )
en fin de case .value=txt
voila on a la fois le caractère entérine a la bonne place je peux faire ce que je veux dessus AVANT que ca soit entériné dans le textbox comme ca l'est avec le change
si tu remplace ta sous boucle par le instr(1,mask,,caractere du masque)tu peux deja jouer un peu mieux avec les emplacements
demonstration
exemple avec mon double inputdateBox
avec ta méthode il te sera impossible de faire ca