Lors de l’utilisation de la fonction IF, Vineet souhaite conserver l’ancienne valeur dans la cellule si la condition est fausse. En d’autres termes, la valeur d’une cellule dans laquelle la fonction IF est utilisée ne doit changer que si la condition testée par la fonction IF est vraie. Par défaut, cependant, la fonction IF rend la valeur 0 si la condition est False.

La fonction IF peut prendre jusqu’à trois paramètres. Le premier paramètre est la comparaison à effectuer, le deuxième paramètre est ce qui doit être retourné si la comparaison est vraie et le troisième est ce qui doit être retourné si la comparaison est fausse. Il est possible de supprimer le dernier paramètre, mais si vous le faites, Excel renverra la valeur 0 si la comparaison est fausse. (C’est ce que Vineet voit renvoyé par son utilisation de la fonction IF.)

La solution évidente, alors, est de vous assurer que vous fournissez à la fonction IF quelque chose qui doit être retourné lorsque la comparaison est fausse. Par exemple, disons que votre formule est dans la cellule B1 et que vous comparez quelque chose dans la cellule A1. La formule que vous utilisez peut ressembler à ceci:

=IF(A1<10,"under ten",B1)

Notez que les mots «moins de dix» sont renvoyés si la valeur de A1 est inférieure à 10. Si cette condition n’est pas remplie, la valeur de B1 est renvoyée.

Étant donné que cette formule se trouve dans la cellule B1, cela signifie que la valeur précédente de la cellule est renvoyée si la condition est fausse.

Cela signifie également que la formule contient une référence circulaire. Pour que les références circulaires fonctionnent correctement, vous devez faire savoir à Excel qu’elles peuvent apparaître dans votre feuille de calcul. Choisissez Outils | Options | Calculez l’onglet et assurez-vous que la case Itération est cochée. Excel autorisera désormais la référence circulaire sans réclamation.

Si vous ne souhaitez pas autoriser une référence circulaire dans votre feuille de calcul, le seul recours consiste à créer une macro qui met à jour la valeur de la cellule B1 en fonction des modifications apportées à la cellule A1:

Private Sub Workbook_SheetChange(ByVal Sh As Object, _   ByVal Target As Range)



' See if the change is related to our cell     If Not (Application.Intersect(Target, Range("A1")) _       Is Nothing) Then         If Range("A1") < 10 Then             Range("B1") = "under ten"

End If     End If End Sub

Cette macro simple, lorsqu’elle est ajoutée au module ThisWorkbook, est exécutée chaque fois qu’il y a une modification dans le classeur. Si la valeur de la cellule A1 est modifiée (et uniquement cette cellule), la valeur est vérifiée pour voir si elle est inférieure à 10. Si c’est le cas, la valeur de la cellule B1 est modifiée. Si ce n’est pas le cas, la valeur de la cellule B1 est laissée seule.

Il y a un « gottcha » que vous devez garder à l’esprit avec l’une des approches discutées jusqu’à présent, formule ou macro. Si la valeur de la cellule A1 est (disons) 15, la cellule B1 contiendra ce qui s’y trouvait auparavant, quoi qu’il en soit. Si vous modifiez la valeur de la cellule A1 en (disons) 7, B1 passera à «moins de dix». C’est bien, mais à partir de là, la cellule B1 ne semblera jamais changer. Pourquoi? Parce que si vous modifiez ensuite la cellule A1 à une valeur supérieure à 10, la cellule B1 contiendra (comme expliqué ci-dessus) ce qui s’y trouvait auparavant. Et, comme vous le comprenez maintenant, la valeur qui existait auparavant est le résultat du résultat vrai précédent, qui était « moins de dix ». Ainsi, vrai ou faux, la formule ou la macro à partir de ce point affiche le texte «moins de dix».

_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 (8260) 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-Leaving_a_Cell_Value_Unchanged_If_a_Condition_Is_False [Laisser une valeur de cellule inchangée si une condition est fausse].