Mike a trois cellules (A1: A3) qui montrent les résultats des calculs. Il a besoin d’un moyen de déterminer la valeur maximale jamais apparue dans l’une de ces cellules et de stocker cette valeur dans la cellule E5. Il sait comment obtenir le maximum des trois, mais lorsqu’il recalcule la feuille de calcul, si les valeurs de A1: A3 sont inférieures à la valeur maximale de E5 (sur la base des déterminations précédentes du maximum de A1: A3), alors E5 ne devrait pas changer. En d’autres termes, E5 ne devrait changer que si ce qui est dans A1: A3 est supérieur à ce qui est dans E5. Mike ne sait pas comment effectuer un tel calcul.

Vous pouvez résoudre ce problème de deux manières. La première consiste à créer une formule simple qui serait placée dans la cellule E5:

=MAX(A1:A3,E5)

La fonction MAX examine les diverses valeurs auxquelles elle fait référence, puis en renvoie le maximum – exactement ce qui est souhaité. Cependant, puisque cette formule est placée dans la cellule E5 et qu’elle fait également référence à E5, elle renverra une erreur. En effet, la formule crée une référence circulaire. Excel peut les gérer, mais vous devez faire un petit changement de configuration pour le faire:

  1. Choisissez Options dans le menu Outils. Excel affiche la boîte de dialogue Options.

  2. Affichez l’onglet Calcul. (Voir la figure 1.)

  3. Assurez-vous que la case Itération est cochée.

  4. Cliquez sur OK.

Maintenant, Excel gère les références circulaires, telles que la formule simple que vous avez placée dans la cellule E5.

La deuxième approche consiste à utiliser une macro pour effectuer le calcul. Cette approche peut être préférée car vous ne souhaitez peut-être pas (pour une raison quelconque) activer les références circulaires dans votre classeur. Ce qui suit est en fait un gestionnaire d’événements, ajouté au code de la feuille de calcul. (Méthode la plus simple:

Faites un clic droit sur l’onglet de la feuille, affichez la fenêtre de code à partir du menu contextuel résultant et ajoutez la macro à cette fenêtre de code.)

Private Sub Worksheet_Calculate()

Dim dMax As Double     dMax = Application.WorksheetFunction.Max(Range("A1:A3"))

If dMax > Range("E5") Then         Application.EnableEvents = False         Range("E5") = dMax         Application.EnableEvents = True     End If End Sub

La macro est déclenchée chaque fois que la feuille de calcul est recalculée. Il saisit le maximum de A1: A3 et le compare à ce qui est dans E5. Ce n’est que si elle est plus grande que cette valeur est alors placée dans E5.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

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

Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

link: / excelribbon-Only_Showing_the_Maximum_of_Multiple_Iterations [Afficher uniquement le maximum d’itérations multiples].