Utilisation de Ucase

  • Initiateur de la discussion Initiateur de la discussion Troudz
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Troudz

XLDnaute Occasionnel
Bonjour tout le monde,

Pour mon deuxième post, ce sera une question bète mais qui me pose bien des problèmes.

J'ai un textbox dans lequel l'utilisateur doit saisir le nom d'un client. Afin de soigner la présentation, je tiens à ce, dès qu'une frappe est effectuée, la lettre saisie soit affichée en majuscule. J'ai donc utilisé ça :

Code:
Private Sub Textbox1_Change()
    Textbox1.Text = UCase(Textbox1.Text)
End Sub

ça marche très bien sauf que, lorsque l'utilisateur retourne en arrière pour saisir une ou plusieurs lettres qui ont été oubliées, le curseur repasse à la fin de la saisie à la moindre frappe. Plutôt génant si l'on veut saisir plusieurs lettres.

Auriez vous une solution ?
 
Re : Utilisation de Ucase

Bonjour Troudz,

il est peut-être préférable de mettre en majuscules après validation de la saisie; ça évitera le problème
Code:
Private Sub TextBox1_Enter()
Textbox1.Text = UCase(Textbox1.Text)
End Sub

à+
Philippe
 
Re : Utilisation de Ucase

Merci pour ta réponse phlaurent. Pour solutionner ce problème j'avais basculé sur l'évenement Exit. ça marche mais je me demandais si il n'y avait pas plutôt moyen de faire ça "en direct".
 
Dernière édition:
Re : Utilisation de Ucase

Bonjour Troudz, Philippe

peut être une autre solution ainsi, en lieu et place de ton "UCase" dans l'événement "change"...

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii >= 97 And KeyAscii <= 122 Then KeyAscii = KeyAscii - 32
End Sub

bonne journée
@+
 
Re : Utilisation de Ucase

Merci Pierrot !

Je venais justement de constater cet écart de 32 entre une lettre et sa majuscule. Seulement je viens également de me rendre compte que ça ne va pas marche pour toutes les lettres accentuées...

En fait je suis en train de me dire que la meilleure solution serait de rester sur l'évènement _Change avec la méthode Ucase et d'y rajouter l'enregistrement de "Textbox.Selstart" avant la saisie et de le restituer après la saisie mais je n'ai pas encore trouvé comment faire.
 
Dernière édition:
Re : Utilisation de Ucase

Bonjour Troudz, Philippe, Pierrot, Yann, le forum,

voici une autre solution (proche de celle de Pierrot) qui prend en compte les accents :
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
a+
 
Dernière édition:
Re : Utilisation de Ucase

Bonjour tout le monde. Désolé pour le retard apporté dans ma réponse mais je ne bossais pas hier après midi (vive les RTT 😀)

Merci à Yann et Romain pour leur réponse.
Yann : Ce post est effectivement très intéressant. J'y ai appris plein de choses ! Merci
Romain : Pourquoi faire compliqué quand on peut faire simple. Ta solution est aussi courte que sympa. Je vais m'orienter la dessus.

Pour info : Je viens de m'amuser à tester quelques caractères spéciaux. Vous aviez remarqué qu'en utilisant le KeyAscii de l'évenement Keypress, on fait planter la procédure à chaque fois qu'on utilise un caractère spécial genre "Œ" ?

J'ai donc pondu la procédure suivante :

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    
    On Error GoTo Erreur
    If InStr("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ '-", Chr(KeyAscii)) = 0 Then
        TextBox1.BackColor = &HFF&
        KeyAscii = 0
    Else
        KeyAscii = Asc(UCase(sansAccent(Chr(KeyAscii))))
    End If
    Exit Sub

Erreur:
    TextBox1.BackColor = &HFF&
    KeyAscii = 0

End Sub

Cela empèche le plantage mais pose encore soucis. En effet, lorsque je saisi un "Œ", mon textbox s'affiche en rouge comme prévu mais lorsque je frappe le caractère suivant, c'est un "Œ" qui s'affiche. Bizarre...

Auriez vous un idée du pourquoi du comment ? Au cas où, je vous met un petit fichier test en pièce jointe.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
361
L
Réponses
3
Affichages
1 K
L
Réponses
3
Affichages
1 K
Guest
G
F
Réponses
1
Affichages
2 K
E
Réponses
3
Affichages
1 K
elbacouswedish
E
A
Réponses
9
Affichages
1 K
A
A
Réponses
2
Affichages
1 K
Anthony
A
Retour