Joydip a une feuille de calcul Excel qui est constamment et automatiquement mise à jour avec des données en direct sur le marché des produits de base. Il souhaite afficher une boîte de message contenant un message particulier chaque fois que les données d’une cellule / plage spécifiée changent pour répondre à certains critères prédéfinis. La validation des données ne fonctionnera pas, car la fonction de validation n’est pas déclenchée lorsque les données changent automatiquement.

La meilleure façon de vérifier les données et d’afficher la boîte de message souhaitée consiste à utiliser une macro qui est déclenchée par l’événement Worksheet_Change. Cet événement est déclenché à chaque fois que le contenu d’une cellule est modifié. Elle n’est cependant pas déclenchée par une modification de ce qui est affiché dans une cellule. Par exemple, si une nouvelle donnée de produit est placée dans une cellule, l’événement est déclenché. Cependant, si une formule est recalculée et qu’un nouveau résultat de cette formule s’affiche, l’événement n’est pas déclenché. Pourquoi?

Parce que la formule elle-même n’a pas changé; ce n’est que le résultat de la formule (ce qui est affiché) qui a été modifié.

Une fois que l’événement Worksheet_Change est déclenché, la macro peut faire tout ce que vous voulez, y compris afficher votre message. Pour cet exemple, supposons que la plage à vérifier est A1: C5 (c’est ici que les données sur les produits sont insérées) et que le critère que vous souhaitez déclencher le message est que la moyenne de la plage est 5. Si le contenu de toute cellule de la plage est modifiée et la moyenne des valeurs de la plage est de 5, puis un message s’affiche.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rng As Range     Set rng = Range("A1:C5")

If Not Intersect(Target, rng) Is Nothing Then         If Application.WorksheetFunction. _           Average(rng) = 5 Then             MsgBox "The average of " & _               rng.Address & " = 5"

End If     End If     Set rng = Nothing End Sub

Il est important que cette macro soit placée dans l’objet feuille de la feuille de calcul que vous souhaitez surveiller. Lorsque vous affichez l’éditeur VBA, cliquez avec le bouton droit sur la feuille de calcul souhaitée dans la zone Explorateur de projet, puis choisissez Afficher le code dans le menu contextuel résultant. Cette fenêtre de code est l’endroit où vous placez la macro.

La macro, encore une fois, est déclenchée à chaque fois qu’il y a un changement n’importe où sur la feuille de calcul. La macro utilise ensuite la fonction Intersection pour déterminer si la modification s’est produite dans la plage A1: C5 souhaitée. Si tel est le cas, la moyenne de la plage est vérifiée et le message s’affiche si le résultat est 5.

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (2906) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.