Remplacer & par 1 lors de la saisie dans textbox
Résolu
Louloude74
Messages postés
62
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention - 6 déc. 2020 à 18:48
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention - 6 déc. 2020 à 18:48
A voir également:
- &É ' è_çà jeux
- Remplacer disque dur par ssd - Guide
- Saisie gestuelle iphone - Guide
- Remplacant de coco - Accueil - Réseaux sociaux
- Remplacer dans word - Guide
- Quel site pour remplacer coco - Accueil - Réseaux sociaux
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peut-être:
peut-être:
Private Sub TextBox1_Change() Me.TextBox1.Text = UCase(Me.TextBox1.Text) Me.TextBox1.Text = replace(Me.TextBox1.Text,"&","1") ' ... Me.TextBox1.Text = replace(Me.TextBox1.Text,"à","0") End Sub
Bonjour
si tu travailles en VB.Net, il y a plus optimisé (en temps d'exécution)
Il faut dériver le textbox et réécrire la méthode ProcessCmdKey
Voilà un exemple en C# (le langage de base de .Net, VB.Net c'est "juste" un skin VB)
https://codes-sources.commentcamarche.net/forum/affich-1526742-keydown-keypress#5
Et de quoi passer de C# à VB.Net
https://lite.qwant.com/?q=c%23+to+vb&client=opensearch
si tu travailles en VB.Net, il y a plus optimisé (en temps d'exécution)
Il faut dériver le textbox et réécrire la méthode ProcessCmdKey
Voilà un exemple en C# (le langage de base de .Net, VB.Net c'est "juste" un skin VB)
https://codes-sources.commentcamarche.net/forum/affich-1526742-keydown-keypress#5
Et de quoi passer de C# à VB.Net
https://lite.qwant.com/?q=c%23+to+vb&client=opensearch
Je n'ai pas expliqué pourquoi ça n'est pas optimisé de faire des Replaces dans l'évènement Change (et c'est valable quelque soit le VB utilisé, mais y'a qu'en .Net où j'ai une bonne solution)
Admettons que ton textBox contienne AZERTYUIOP et que tu viennes de taper à.
On va appliquer les 10 Replace les un après les autres.
Chaque Replace va scruter chaque caractère pour voir s'il s'agit de celui qu'il doit remplacer:
Donc l'évènement Changed est à nouveau déclenché et on recommence à scruter AZERTYUIOP0 10 fois pour rien.
Au final 220 Replaces sont exécutés et un seul porte ses fruits.
Evidement c'est fait en un battement de cils, mais comme je suis un peu tordu, je vais copier coller
Il y a changement, donc
A vue de nez 10 évènements Changed qui vont faire chacun 10 Replaces, en espérant que toutes les exécutions en parallèle ne vont pas entrer en conflit.
Là ça va commencer à se voir, et je ne te dis pas si tu tapes une touche entre temps....
Admettons que ton textBox contienne AZERTYUIOP et que tu viennes de taper à.
On va appliquer les 10 Replace les un après les autres.
Chaque Replace va scruter chaque caractère pour voir s'il s'agit de celui qu'il doit remplacer:
- AZERTYUIOPà pour trouver &,
- AZERTYUIOPà pour trouver é
- etc...sans rien faire jusqu'à
- AZERTYUIOPà pour trouver à, et là il trouve à qu'il remplace par 0 le textBox devient AZERTYUIOP0
Donc l'évènement Changed est à nouveau déclenché et on recommence à scruter AZERTYUIOP0 10 fois pour rien.
Au final 220 Replaces sont exécutés et un seul porte ses fruits.
Evidement c'est fait en un battement de cils, mais comme je suis un peu tordu, je vais copier coller
&é"'(-è_çàdans mon textBox
Il y a changement, donc
&é"'(-è_çàdevenir
1é"'(-è_çàqui va lancer un nouveau évènement change, l'un deux "Change" en cours d'exécution (je ne sais pas lequel sera prioritaire sur l'autre...) va rechanger le texte en
12"'(-è_çàqui déclenchera une 3eme exécution de l'évènement etc...etc...
A vue de nez 10 évènements Changed qui vont faire chacun 10 Replaces, en espérant que toutes les exécutions en parallèle ne vont pas entrer en conflit.
Là ça va commencer à se voir, et je ne te dis pas si tu tapes une touche entre temps....
Bonjour et merci pour vos réponses,
J'ai testé la première solution, celle avec replace().
C'est rapide mais ne fonctionne pas pour les touches é, è, ç et à.
Je suis allé voir ton lien et fait une conversion mais des lignes de code sont en rouge.
Dommage qu'il n'existe pas une fonction comme ucase().
Je vais continuer à chercher.
Encore merci pour vos réponses et bon dimanche.
Ludwig
J'ai testé la première solution, celle avec replace().
C'est rapide mais ne fonctionne pas pour les touches é, è, ç et à.
Je suis allé voir ton lien et fait une conversion mais des lignes de code sont en rouge.
Dommage qu'il n'existe pas une fonction comme ucase().
Je vais continuer à chercher.
Encore merci pour vos réponses et bon dimanche.
Ludwig
ceci sera un peu plus rapide. cela me semble assez peu important, l'ordi travaille juste un tout petit peu à chaque caractère entré:
Private Sub TextBox1_Change() dim t as string static aa as boolean if not aa then aa = true t=Me.TextBox1.Text t = UCase(t) t = replace(t,"&","1") ' ... ajouter les 8 lignes de 2 à 8 t = replace(t,"à","0") it t <> Me.TextBox1.Text then Me.TextBox1.Text = t end if aa = false end if End Sub