J'essaie d'écrire une macro simple pour afficher une fenêtre contextuelle (vbOKOnly) si la valeur dans une cellule dépasse une certaine valeur.
J'ai essentiellement une feuille de travail avec des produits et des remises. J'ai une formule dans une cellule, disons A1, qui montre la remise en pourcentage (50% ou 0,5) de remise effective de toutes les entrées.
Ce que je recherche, c'est du code pour afficher une boîte de message si la valeur de la cellule A1 dépasse 50%, car l'entrée d'une autre cellule a poussé la remise à plus de 50%.
Merci!
Vous pouvez ajouter le code VBA suivant à votre feuille:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1") > 0.5 Then
MsgBox "Discount too high"
End If
End Sub
Chaque fois qu'une cellule est modifiée sur la feuille, elle vérifie la valeur de la cellule A1.
Remarques:
Widor utilise une approche différente (Worksheet_Calculate
au lieu de Worksheet_Change
):
Conclusion : utilisez Worksheet_Change
si A1 ne dépend que des données situées sur la même feuille, utilisez Worksheet_Calculate
si non.
Essentiellement, vous souhaitez ajouter du code à l'événement Calculate
de la feuille de calcul appropriée.
Dans la fenêtre Projet de l'éditeur VBA, double-cliquez sur la feuille à laquelle vous souhaitez ajouter du code dans les listes déroulantes en haut de la fenêtre de l'éditeur, choisissez respectivement `` Feuille de calcul '' et `` Calculer '' à gauche et à droite.
Vous pouvez également copier le code ci-dessous dans l'éditeur de la feuille que vous souhaitez utiliser:
Private Sub Worksheet_Calculate()
If Sheets("MySheet").Range("A1").Value > 0.5 Then
MsgBox "Over 50%!", vbOKOnly
End If
End Sub
De cette façon, chaque fois que la feuille de calcul recalcule, elle vérifie si la valeur est> 0,5 ou 50%.
Je ne pense pas qu'une boîte de message soit la meilleure façon de procéder, car vous auriez besoin du code VB exécuté en boucle pour vérifier le contenu de la cellule, ou à moins que vous ne prévoyiez d'exécuter la macro Dans ce cas, je pense qu'il serait préférable d'ajouter une mise en forme conditionnelle à la cellule pour changer l'arrière-plan en rouge (par exemple) si la valeur dépasse la limite supérieure.