VBA. Si cellule contient "."... [Résolu/Fermé]

Signaler
-
Messages postés
23353
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
9 avril 2020
-
Bonjour,

J'ai créé un userform et je voudrais bloquer le fait que les utilisateurs qui entreront un montant puisse le faire avec un point pour séparer les décimales.

Je voudrais créer un MsgBox pour leur dire d'utiliser une virgule si jamais ils entrent un point;

Savez vous le code qui me permettrait de savoir si il y a un point "." dans le montant qu'ils entrent?

Je sais pas si j'ai été clair....

Merci de votre aide !!!

2 réponses

Messages postés
12262
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
5 mars 2020
2 376
Salut,
Pas très clair...
que les utilisateurs qui entreront un montant Je suppose donc que l'utilisateur entre un montant dans une textbox.
Pour cela, tu peux même te passer d'avertir l'utilisateur par une msgbox, en remplaçant, dans la textbox le point par une virgule :
TextBox1.Value = Replace(TextBox1.Value,".",",")

Si tu tiens à avertir et bloquer l'utilisateur il convient d'utiliser l'évènement TextBox_change comme ceci :
Private Sub TextBox1_Change()
If Right(TextBox1.Value, 1) = "." Then
MsgBox "merci de saisir une virgule au lieu du point"
TextBox1.Value = ""
End If
End Sub
super ca fonctionne merci bcp!!
Messages postés
3
Date d'inscription
vendredi 19 août 2011
Statut
Membre
Dernière intervention
18 octobre 2011

Bonjour pijaku, pourquoi lorsque je copie la formule plus bas dasn Excel dans la zone en blanc de "Visualiser le code" de la Feuil1, lorsque je saisi un point(.) rien ne se passe ?

Private Sub TextBox1_Change()
If Right(TextBox1.Value, 1) = "." Then
MsgBox "merci de saisir une virgule au lieu du point"
TextBox1.Value = ""
End If
End Sub
Messages postés
25007
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 avril 2020
5 149
Bonjour
pour info, vous pouvez le faire directement par validation, sans VBA ni TextBox dans les champ de cellule concerné.
Exemple à adapter:
pour un champ de A1 à A100: sélectionnez A1:A100
barre d'outil / Données / Validation /
choisir en haut: personnalisé
en bas la formule:
=NB.SI(A1:A1;"*.*")=0
cliquez ensuite sur Alerte d'erreur
choisissez le type de validation (arrêt ou message seulement)
entrez un texte dans la fenêtre message d'erreur
remplacer le point par une virgule
et valider le tout par OK
Selon les options choisies:soit excel interdira l'entrée de la valeur avec point en affichant le message
soit excel affichera le message en demandant confirmation de l'entrée
crdlmnt
Merci de votre aide. Ceoendant le message ne s'affiche pas lorsqu'on écrit 2.2 ou 3.4 par exemple, Avez-vous une solution ou je fais quelque chose de pas correct?
J'ai besoin également d'un avertissement lorsqu'une formule qui doit toujours être égale à o change soudainement de valeur. Pouvez-vous pendez à quelque chose?
Messages postés
23353
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
9 avril 2020
6 025
Bonjour tout le monde,

Plutôt que de forcer le format en vba je pense qu'il est préférable (et plus simple) de convertir la chaine en numérique avec cbdl(valeur).
La cellule aura bien un nombre utilisant le format défini. Si demain l'utilisateur change ce format, son choix sera respecté.
Ex :
a = "1234567.89"
[A1] = CDbl(a)

eric
Messages postés
25007
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 avril 2020
5 149
Bonjour
n'étant pas un spécialiste en macro tout ce que je peux vous proposer et dans ce modèle;
voyez s'il vous convient et vérifier le fonctionnement de la validation.
http://www.cijoint.fr/cjlink.php?file=cj201109/cijod6vwC9.xls
crdlmnt
1000 x merci pour votre effort. Avez-vous remarqué qu'Excel ne donne le message d'avertissement seulement lorsqu'on entre le point(.) directement et non lorsqu'il se retrouve dans un nombre? Je vais créer un nouveau topo pour spédifier ma demande.