oui c'est une cellule calculée (j'aurai pu intégrer le calcul à la macro mais, je ne sais pas trop comment m'y prendre pour, donc j'ai décidé de la calculer dans la feuille)
je veux qu'à l'ouverture de mon fichier, si la cellule H37 est supérieure à 10000 la fenêtre s'ouvre.
Ou alors si j'entre une valeur et que la cellule H37 passe au dessus de 10000, elle s'ouvre aussi !
Private Sub Workbook_Open()
If Sheets("Feuil1").Range("H37") > 10000 Then
MsgBox "Attention, valeur critique !", vbCritical, "Dépassement"
End If
End Sub
à adapter pour le nom de la feuille. Pour le changement de valeur, il faudrait savoir dans quelle cellule tu tapes les valeurs pour ne faire le test que si tu es dans ces cellules là, mais tu peux aussi mettre simplement dans le code de la feuille
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("H37") > 10000 Then
MsgBox "Attention, valeur critique !", vbCritical, "Dépassement"
End If
End Sub
Aucune message box ne s'ouvre, aussi bien quand j'ouvre le fichier ou bien qu'en entrant une nouvelle valeur qui fait dépasser 8000 dans la cellule H37.
Aucune message box ne s'ouvre, aussi bien quand j'ouvre le fichier ou bien qu'en entrant une nouvelle valeur qui fait dépasser 8000 dans la cellule H37.
oups oui ça ne venait pas du 10000 mais c'est bon j'ai trouvé la solution, une bête erreur de sécurité des macros !! (oui je sais erreur bête ...)
Juste un petit détail purement informatif, si je veux changer la croix rouge de la message box par un signe attention, il faut que je change vbcritical non ?? Et par quoi ??
Petit détail supplémentaire, une fois que H37 a dépassé la valeur voulue, la message box s'ouvre à chaque fois que je change de cellule, ce qui peut être énervant, n'est il pas possible que la message box ne s'ouvre qu'une seule fois après que H37 ait dépassé la valeur souhaitée ??
Re ,
Pour que le message ne s'affiche que lorsque tu changes la valeur, c'est ce que je te demandais tout à l'heure, quelles cellules changent?
En admettant que ce soit A1
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If Range("H37") > 10000 Then
MsgBox "Attention, valeur critique !", vbExclamation, "Dépassement"
End If
End Sub
ne réagira que si A1 est modifié, donc à adapter à ton cas. J'ai mis un vbExclamation, je pense que ça t'ira mieux.
Bon courage
Alors l'idée est bonne, seulement ça ne fonctionne pas parce que c'est une valeur dans une colonne qui peut changer (celles dans la colonne B) et deuxièmement, parce qu'il y a déja une valeur donnée par une formule dans cette colonne B.
Donc la fonction Is Nothing ne peut pas fonctionner étant donné qu'il y a toujours quelque chose dans les cellules de ces colonnes. Il faudrait une fonction Is Changing lol mais je sais pas si ça existe...
Non, Is Nothing vérifie si l'intersection de la cellule qui vient de changer correspond à la zone souhaitée...
Par contre, si c'est dans la colonne C par exemple que la valeur changée va se calculer dans B, puis du coup en H37, c'est l'intersection de C et de Target qu'il va faloir surveiller.
Capito ?
Bonne journée
En tout cas il y a toujours des valeurs calculées dans la colonne B. Ces valeurs sont régulièrement modifiées (la formule est écrasée) ce qui peut amener à changer la valeur de la cellule H37.
Voila le scénario susceptible de changer la cellule H37. Je sais pas si c'est plus clair?