EXCEL VBA Problème condition + Msgbox

Fermé
Kamou - Modifié par Kamou le 25/07/2012 à 11:19
 Kamou - 25 juil. 2012 à 15:07
Bonjour à tous,

je cherche à faire un truc tout bête mais sur lequel je bloque méchamment du fait de mes connaissances (plus que) limitées en VBA.


J'ai des cellules qui doivent avoir la même valeur. Mon but est simple: quand un utilisateur remplit le tableau, une msg box apparait s'il n'a pas introduit des valeurs égales dans des cellules qui devraient être égal.


Plus simplement: je voudrais que B9 = B19 et si ce n'est pas le cas une Msg Box apparait lui rappelant qu'il n'a rien compris et que les valeurs doivent être égal.


La fonction que j'utilise ne semble pas avoir de problème et pourtant rien ne se pass<e dans l'excel quand j'introduis des valeurs différentes dans les cellules concernées



Merci d'avance pour votre aide :)

Voila ma macro:

Sub EQUAL()
If [B19] <> [B9] Then
MsgBox "Numbers of customers must be equal! ... Logical Right?", , "Error"
End If
End Sub




A voir également:

7 réponses

Bonjour,

Une autre solution toute simple, tu peux utiliser l'option "validation des données" que tu obtiens en faisant données/validation.
Ainsi tu peux choisir des critères de validation et faire apparaître des messages d'erreurs.
Pas besoin de macro quand Excel a des programmes déjà installés ! ;)
2
Alors clairement cette option est vraiment pratique !!! Merci :)
Mais malheureusement j'ai l'impression que ca marche uniquement quand on rentre les données dans la cellule directement. Comme il s'agit d'un calcul (en l'occurrence d'une somme), lorsque j'entre les données du calculs la cellule agit normalement et aucun message n'apparait...
0
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 190
25 juil. 2012 à 11:22
Bonjour,
Je crains fort que ton problème se complique lorsqu'il s'agit de bien déterminer le bon "évènement".
Quand appelles-tu ta fonction ?
1
Bonjour tuxboy,

Alors si par "appeller" tu entends quand est-ce que je veux qu'elle apparraisse et bien j'aimerais que le Msg box viennent quand le chiffre entré dans la cellule b19 (qui est le résultat d'une somme) n'est pas égal à la cellule b9 (qui est également le résultat d'une autre somme). Les deux sommes devant être égal, je voudrais qu'un message "interpelle" l'utilisateur si ce n'est pas le cas.

J'espère être clair ?!?


Merci pour ta réponse !
0
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 190
25 juil. 2012 à 12:50
Modifie alors la "Sub Worksheet_Change" existante ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B19").Address Then
If Target.Value <> Range("B9").Cells.Value Then
MsgBox "Numbers of customers must be equal! ... Logical Right?", , "Error"
End If
End If
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci!

Alors j'ai essayé ta solution mais malheureusement rien ne se produit.... Par contre j'ai trouvé une solution qui fonctionne presque. La voici:

Private Sub Worksheet_Calculate()
If [B9] <> [B19] Then MsgBox "Numbers of customers must be equal! ... Logical Right?", vbOKOnly, "Error"
End Sub

Le problème qui est apparu maintenant c'est que le message apparait à chaque étape de la somme (à chaque fois qu'une cellule faisant partie du calcul est remplie) alors que je souhaiterais que le message n'apparaisse qu'une seule fois à la fin des calculs si les SOMMES ne sont pas égales...
0
tuxboy Messages postés 995 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 190
25 juil. 2012 à 13:24
Tu es sur la bonne voie... En combinant ta solution à la mienne, tu devrais y arriver... car le bon évènement, c'est "Change" et non "Calculate"

Courage tu y es presque !
0
Haaa voilà!!

Alors selon tes conseils j'ai triffouillé par ci par la en utilisant "Change" et non "Calculate". J'ai malheureusement pas réussi à contrer le problème évoqué dans mon dernier post et j'en suis resté la:

Private Sub Worksheet_Change(ByVal Target As Range)
If [B9] <> [B19] Then MsgBox "Numbers of customers must be equal! ... Logical Right?", vbOKOnly, "Error"
End Sub


Du coup j'avoue que je suis bloqué parceque clairement mes connaissances sont pas au top!
Si tu avais une solution ca me dépannerait sévèrement! :)

Mais en tout cas merci bcp pour ton aide jusqu'a maintenant!
0