MsgBox qui s'affiche 2 fois

Bonjour,

un petit problème avec une portion de mon code vba: ma msgBox s'affiche 2 fois au lieu d'une seule.

Voilà mon code:

Private Sub ComboBoxPrixActe_Change()

If Not IsNumeric(ComboBoxPrixActe) Then

ComboBoxPrixActe = " "

MsgBox ("saisissez un chiffre")

End If

End Sub

Bonjour,

C'est normal qu'il s'affiche 2 fois :

  • si la valeur n'est pas numérique alors message
  • si elle est vide, donc non numérique également, alors message.

essaie ainsi :

Private Sub ComboBoxPrixActe_Change()
If Not IsNumeric(ComboBoxPrixActe) and ComboBoxPrixActe <> "" Then
MsgBox ("saisissez un chiffre")
ComboBoxPrixActe = " "
End If
End Sub
12test.xlsm (18.44 Ko)

Cordialement,

Bonjour toutes et tous bon week end

coucou Xorsankukai

une variante avec Keypress (si pas numérique, rien ne s'affiche dans la combobox1, un message, on se place dans la combo

et un + par double clic on supprime le contenu de la combobox1 de notre feuille du classeur.

Private Sub ComboBoxPrixActe_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ComboBoxPrixActe.Value = ""  ' on supprime
End Sub

Private Sub ComboBoxPrixActe_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
     If Not IsNumeric(Chr(KeyAscii)) Then
            MsgBox "Saisir des chiffres,merci!"
           KeyAscii = 0
      Else
   ComboBoxPrixActe.Activate
  End If
End Sub

crdlt,

André

15comboooo.xlsm (25.86 Ko)

Super les gars merci!

Andre13, ton code est bon mais trop complexe pour un débutant. J'aime comprendre le code que j'écris dans la mesure du possible. Mais c'est cool, j'ai lu ce chapitre là mais franchement j'ai rien compris. peut etre quand je serais un peu plus rodé..

Xorsankukai: J'ai compris ton explication! logique! j'y avais pas pensé. Merci encore.

J'ai fouillé un peu partout sans trouver si c'est possible de faire pareil en disant si la textbox n'est pas de type string alors n'accepte pas...

Vous en savez quelque chose?

Re,

Merci pour ton retour.

si la textbox n'est pas de type string alors n'accepte pas

Non, désolé, je ne sais pas faire.....une textbox contient du texte par défaut.

Tu peux faire la manip.inverse et dire si textbox est numérique alors....

13test2.xlsm (20.09 Ko)

Ps: Salut André13

Oui en effet.. mais ça va fonctionner seulement dans certains cas et pas d'autres. exemple si je mets 4444 ok ça bloquera mais si je mets GG33 ça va considérer que c'est bon parce que ce n'est pas du numéric mais pour moi c'est pas du string..

Mais merci quand même. Je continuerai à cherche.

Re,

Je crois que j'ai trouvé ta réponse ,

32test3.xlsm (18.43 Ko)

Bye, @+

Comme j'ai dit tout à l'heure à Andre13, je suis novice et pour moi c'est trop complexe ton code!!!! mais ça marche très bien, je vais l'intégrer à mon projet. Mais j'aimerais le comprendre

Re,

je suis novice et pour moi c'est trop complexe ton code!!!

Je ne suis pas (hélas !) l'auteur de ce code....

N'étant pas un pro, difficile de te l'expliquer....on autorise uniquement les lettres de a à z en minuscules et A à Z en majuscule y compris les espaces (code 32)

Un peu de lecture ici https://msdn.microsoft.com/fr-fr/vba/language-reference-vba/articles/keypress-event

En espérant que cela t'aide,

Cordialement,

Rechercher des sujets similaires à "msgbox qui affiche fois"