Stuart a une série de lectures dans une feuille de calcul. Dans la première colonne, il a des dates associées aux lectures et dans la deuxième colonne, il a les lectures réelles. Stuart aimerait avoir une formule qui renverra la première date à laquelle une lecture est devenue négative. En d’autres termes, la formule doit rechercher la première valeur négative dans la deuxième colonne, puis renvoyer la date associée à cette valeur.

Il peut y avoir plusieurs valeurs négatives dans la deuxième colonne, mais il n’a besoin que de la date associée à la première valeur négative.

Il existe plusieurs manières d’aborder ce problème. Toutes les méthodes supposent que les dates de la colonne A sont dans l’ordre croissant et que les lectures de la colonne B ne sont dans aucun type d’ordre discernable. (En d’autres termes, les lectures pourraient rebondir au-dessus et en dessous de 0 à une date donnée.)

À condition que vous ayez un certain contrôle sur la mise en page de la feuille de calcul, vous pouvez ajouter une colonne de travail intermédiaire dans la colonne C, utilisée pour indiquer lorsqu’une valeur est négative. Placez simplement une formule comme celle-ci dans la colonne C, à droite de chaque lecture:

=IF(B1<0,A1,"")

Cette formule renvoie la date dans la colonne A si la valeur de B est inférieure à 0 (négative), sinon elle ne renvoie rien. Il ne vous reste plus qu’à rechercher la valeur minimale dans la colonne C:

=MIN(C:C)

Mettez en forme le résultat sous forme de date et il représente la date à laquelle les lectures sont devenues négatives pour la première fois.

Une autre approche consiste à renoncer à l’utilisation de la colonne intermédiaire et à utiliser une formule matricielle pour déterminer la date. En supposant que les données se trouvent dans la plage A1: B42, vous pouvez utiliser l’une des formules suivantes:

=MIN(IF(B1:B42<0,A1:A42,""))

=OFFSET($A$1,MATCH(TRUE,$B$1:$B$42<0,0)-1,,,)

=INDEX(A:A,MIN(IF(B1:B42<0,ROW(B1:B42))))

=INDEX(A1:A42,MATCH(TRUE,B1:B42<0,0))

=INDIRECT("A"&MIN(IF(B1:B42<0,ROW(B1:B42))),TRUE)

N’oubliez pas que ce sont toutes des formules matricielles, vous devez donc entrer celle que vous choisissez en appuyant sur Maj + Ctrl + Entrée. Formatez le résultat sous forme de date et c’est la réponse que vous recherchez.

Si vous préférez, vous pouvez également utiliser une simple macro pour déterminer la date:

Function GetFirstNegative(rngdata)

Dim c As Variant

For Each c In rngdata         If c < 0 Then             GetFirstNegative = c.Offset(0, -1)

Exit Function         Else             GetFirstNegative = "All Data is Positive"

End If     Next End Function

Dans votre feuille de calcul, vous utiliseriez cette fonction définie par l’utilisateur de cette manière:

=GetFirstNegative(B1:B42)

_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 (7092) 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-Finding_the_Date_Associated_with_a_Negative_Value [Recherche de la date associée à une valeur négative].