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 !

GeoTrouvePas

XLDnaute Impliqué
Bonsoir le forum,

J'ai un petit problème tout bête pour lequel je ne trouve pas de solution. Je ne veux autoriser que la saisie de certains caractères dans un textbox.
Pour cela j'ai collecté les codes Ascii qui seront validés et j'ai fait cette petite routine :

Code:
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 97 To 122, 65 To 90, 32, 45, 39, 46
    Else Case
        KeyAscii = 0
        With TextBox1
            .BackColor = &HFF&
            .SetFocus
            .SelStart = 0
            .SelLength = Len(Textbox1)
        End With
    End Select
End Sub

Vous aurez remaraqué le Case suivi immédiatement d'un Case Else. C'est pas beau hein ? 😛 C'est parce que je ne sais pas pas comment fiare pour faire un équivalent de "Case Not".

J'avais trouvé une solution hier ici même mais impossible de remettre la main dessus.

auriez vous une idée ?

Je vous remercie grandement.

Bonne fin de journée à tout le monde.
 
Re : Select Case + Not

Bonjour Papou-net,

Oui en effet, j'ai fait une inversion. Mais ce n'est pas le problème en fait ^^

Je voudrais transformer ces deux lignes :

Code:
...
Case 97 To 122, 65 To 90, 32, 45, 39, 46
Case Else
...

Par l'équivalent d'un :

Code:
...
Case not(97 To 122, 65 To 90, 32, 45, 39, 46)
...
 
Re : Select Case + Not

Bonjour à tous
Peut-être ceci ?
VB:
Case Is < 32, 33 To 38, 40 To 44, 47 To 64, 91 To 96, Is > 122
ROGER2327
#5061


Mardi 17 Pédale 138 (Saint Dricarpe, prosélyte, SQ)
21 Ventôse An CCXIX
2011-W10-5T00:40:10Z
 
Re : Select Case + Not

Bonjour Papou-net,

Oui en effet, j'ai fait une inversion. Mais ce n'est pas le problème en fait ^^

Je voudrais transformer ces deux lignes :

Code:
...
Case 97 To 122, 65 To 90, 32, 45, 39, 46
Case Else
...

Par l'équivalent d'un :

Code:
...
Case not(97 To 122, 65 To 90, 32, 45, 39, 46)
...

Bonjour GeoTrouvePas,

Et pourtant, ça fonctionne !

J'ai bien compris ta demande, mais je pense que ce n'est pas possible autrement.

Si tu essaies le code suivant, tu verras que, s'il ne provoque pas d'erreur, il n'atteint pas le but recherché :

Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
  Case Not 97 To 122, Not 65 To 90, Not 32, Not 45, Not 39, Not 46
    MsgBox KeyAscii
End Select
End Sub

En effet, il teste la valeur de KeyAscii, mais comme elle est forcément différente de toutes les autres valeurs que la sienne, l'affichage du message se fait à tous les coups.

Cette solution me paraît donc la seule possible dans ce cas. Autrement, il faut passer par des If...Then, ou bien par une lecture dans un tableau de variables, ce qui de toutes les façons conduirait à une écriture de code plus fastidieuse.

Cordialement.

PS : Bonjour Roger.
 
Re : Select Case + Not

Désolé pour le retard.

Effectivement, ça ne semble pas possible de fiare ça "directement" dans le premier Case au lieu de le faire dans le Case Else. C'est pas dramatique mais j'aurai aimé faire ça plus "proprement".

Merci de votre aide.
 
Re : Select Case + Not

Bonjour,

et ainsi ?
Code:
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
    Case 97 To 122, 65 To 90, 32, 45, 39, 46: Exit Sub
    End Select
    KeyAscii = 0
    With TextBox1
        .BackColor = &HFF&
        .SetFocus
        .SelStart = 0
        .SelLength = Len(TextBox1)
    End With
End Sub
 
- 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
3
Affichages
600
Retour