Microsoft 365 Imposer la saisie du signe + ou - dans une textbox

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

ivan27

XLDnaute Occasionnel
Bonsoir à tous,

Dans une textbox, numérique, je souhaiterais obliger l'utilisateur à saisir le signe + ou - devant le nombre qui suit

exemple : +30 ou -5

Si la saisie ne commence pas par le signe + ou - alors Msgbox d'erreur.

Merci d'avance pour votre aide

Bonne fin de soirée

Ivan
 
Solution
@ivan27
Ci-joint la dernière version avec un module de classe pouvant résoudre votre demande.
A votre disposition si vous désirez des explications complémentaires que vous ne trouvez pas dans le code ... 😎

Edit du 1/9 : re-dépot du fichier
Tout à fait, si l'utilisateur sélectionne tout le contenu de la textbox et saisit un chiffre, cela passe.
Je réfléchis à comment "trapper" ce phénomène
et oui c'est plus difficile et/ou plus long en terme de code si tu intercepte pas PENDANT LE KEYPRESS
Et pour intercepter il te faut le "post" et tu la pas dans keypress il faut donc concaténer
regarde ma ressource sur les textbox formatés datebox tu comprendra mieux
 
tiens @fanch55
essaie de taper autre chose ou plus que ton pseudo
essaie d'oublier la majuscule
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     With TextBox1
        V = .Value & Chr(KeyAscii)    'on concat le value + la touche dans la variable v
        If Len(V) Then If Mid("Fanch55", 1, Len(V)) <> V Then KeyAscii = 0
    End With
End Sub
ca a du bon l'interception non?
tu contrôle
  1. l'orthographe maj/min
  2. le maxlength
  3. bloque les autre touches de la première touche tapée a la dernière
  4. etc..etc..
en une seule ligne 😉
en espérant t'avoir convaincu 😉
 
tiens @fanch55
essaie de taper autre chose ou plus que ton pseudo
essaie d'oublier la majuscule
VB:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     With TextBox1
        V = .Value & Chr(KeyAscii)    'on concat le value + la touche dans la variable v
        If Len(V) Then If Mid("Fanch55", 1, Len(V)) <> V Then KeyAscii = 0
    End With
End Sub
ca a du bon l'interception non?
tu contrôle
  1. l'orthographe maj/min
  2. le maxlength
  3. bloque les autre touches de la première touche tapée a la dernière
  4. etc..etc..
en une seule ligne 😉
en espérant t'avoir convaincu 😉
Pas mal, ça fonctionne bien ... 😛
Sauf qu'on est obligé de supprimer le contenu avant de pouvoir réécrire par dessus.
On peut saisir moins mais pas plus que le modèle ...
ça va être dur à caser ... 😎,
je ne sais pas trop comment le détourner pour l'appliquer à notre cas .
 
@ivan27
Ci-joint la dernière version avec un module de classe pouvant résoudre votre demande.
A votre disposition si vous désirez des explications complémentaires que vous ne trouvez pas dans le code ... 😎

Edit du 1/9 : re-dépot du fichier
 

Pièces jointes

Dernière édition:
Bonjour le forum, fanch55
Là on est bon. Par contre, cette résolution de problème en entraîne un autre que je n'avais pas prévu.
Les données saisies dans la TextBox sont transférées dans une cellule excel.
Dans la cellule, "+55" devient "55".
Donc la valeur n'est plus visible dans ma TextBox en mode consultation !
Si j'essaye d'ajouter le signe ''+'' via le formatage, ce n'est pas mieux!
Si je converti la cellule en texte, la valeur est à nouveau visible dans la TextBox mais je ne peux plus faire de calcul sur cette cellule....
Bien cordialement,
Ivan
 
- 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

Retour