Microsoft 365 [Résolu] VBA | Interdire la saisie de certains caractères dans un TextBox

  • Initiateur de la discussion Initiateur de la discussion ralph45
  • 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 !

ralph45

XLDnaute Impliqué
Bonjour ami.e.s exceldownoadien.ne.s,

J'ai un petit service à demander : pour le travail, j'ai créé un fichier avec formulaire qui permet de générer des dossiers et des sous-dossiers dans un répertoire et tout fonctionne.
Là où le bât blesse, c'est que certaines personnes saisissent des caractères qui foutent la m... pagaille dans mon code VBA.

1° En effet, comme vous pouvez le voir dans le fichier joint, le contenu de la TextBox1 (Titre) est une des composantes du nom de dossier/sous-dossier.
2° Aussi, j'ai listé les caractères "dangereux" dans une matrice (les espaces en trop sont un malus non-critique,mais bon...)
3° Lors de la saisie d'un caractère critique, une pop-up ou Userform m'indiquera une interdiction de saisir ledit caractère.
4° Je pense avoir mis toutes les spécificités dans le fichier et vous remercie d'avance de votre aide !

Bonne journée et week-end ensoleillés !
 

Pièces jointes

Bonjour,

Un code sans avertissement, il n'acceptera pas d'autres caractères que ceux qui mentionnés dans le code.
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub
Bonne journée.
 
Bonjour le fil

Juste pour que le moteur de recherche du forum se grippe pas ou ne s'ennuie pas...
Nous étions en 2014
et pas en 1968 où il était interdit d'interdire.
😉
 
Bonjour ami.e.s exceldownoadien.ne.s,

J'ai un petit service à demander : pour le travail, j'ai créé un fichier avec formulaire qui permet de générer des dossiers et des sous-dossiers dans un répertoire et tout fonctionne.
Là où le bât blesse, c'est que certaines personnes saisissent des caractères qui foutent la m... pagaille dans mon code VBA.

1° En effet, comme vous pouvez le voir dans le fichier joint, le contenu de la TextBox1 (Titre) est une des composantes du nom de dossier/sous-dossier.
2° Aussi, j'ai listé les caractères "dangereux" dans une matrice (les espaces en trop sont un malus non-critique,mais bon...)
3° Lors de la saisie d'un caractère critique, une pop-up ou Userform m'indiquera une interdiction de saisir ledit caractère.
4° Je pense avoir mis toutes les spécificités dans le fichier et vous remercie d'avance de votre aide !

Bonne journée et week-end ensoleillés !
Bonjour,
Suggestion : introduire une gestion des caractères saisis dans l'évènement KeyDown du TextBox (Textbox_KeyDown)
exemple :
VB:
Sub TextBox_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'on contrôle les touches tapées
        Select Case KeyCode
        Case 96 To 105  'on gère les lettres autorisées
            Saisie = Saisie + Chr(KeyCode)
        Case Else:
            KeyCode = 0
        End Select
End Sub
Cordialement
 
Finalement, je reprends la philosophie @cp4 en me concentrant sur les caractères autorisés ! 😛
J'y ai ajouté un petit complément qui personnellement me convient, voir plus bas.

Seulement, je n'arrive toujours pas à géré les espaces inutiles... avec un TRIM ?

VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If InStr("0123456789AÀÁÂÄBCDEÉÊË€FGHIÌÍÎÏJKLMNOÒÓÔÖPQRSTUÛÜVWXYZaàâäbcdeéèêëfghiîïjklmnoöôpqrstuûüùvwxyz -_'", Chr(KeyAscii)) = 0 Then KeyAscii = 0
End Sub

ralph45
 
- 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

Y
Réponses
8
Affichages
4 K
A
Retour