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

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
 

patricktoulon

XLDnaute Barbatruc
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
 

patricktoulon

XLDnaute Barbatruc
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 ;)
 

fanch55

XLDnaute Barbatruc
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 ... :p
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 ... :cool:,
je ne sais pas trop comment le détourner pour l'appliquer à notre cas .
 

fanch55

XLDnaute Barbatruc
@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 ... :cool:

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

Pièces jointes

  • Ivan.xlsm
    50.3 KB · Affichages: 13
Dernière édition:

ivan27

XLDnaute Occasionnel
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
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 510
Membres
103 570
dernier inscrit
patrickb83p