Excel croissance décroissance

Résolu/Fermé
Alex - 3 mai 2011 à 09:35
 Alex - 4 mai 2011 à 20:38
Bonjour,
J'ai une série de nombres sur une même colonne (nombre entier) qui sont soit croissants soit décroissants et je souhaiterais compter le nombre de fois où cette série change de "sens" (croissant ou décroissant). J'ai essayé avec des SI mais je n'y arrive pas. Connaissez vous une manière simple ?

Exemple : 0.0.0.15.30.70.15.0.0.15.15.30 résultat : 3 fois

Merci !
A voir également:

2 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 412
Modifié par Vaucluse le 3/05/2011 à 12:48
Bonjour
je ne garantis pas, mais essayez celle-ci
sous réserve que la cellule avant le champ soit égale à 0 et celle d'après la fin soit au maxi de la liste (soit les cellules A1 et A13 dans l'exemple pour un champ effectif de A2 à A12)
=SOMMEPROD((A2:A12>A1:A11)*(A2:A12>A3:A13))+SOMMEPROD((A2:A12<A1:A11)*(A2:A12<A3:A13))

mais je ne garantis pas

Bonne chance

crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
ccm81 Messages postés 10879 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 septembre 2024 2 415
Modifié par ccm81 le 3/05/2011 à 15:56
bonjour a tous les deux

une macro a mettre dans un module (alt-F11 pour acceder à l'éditeur puis coipier/coller)
utilisation
si la plage a tester est B1:B20
=nbchange(B1:B20)

Public Function nbchange(plage As Range) As Long 
Dim nbch As Long, nbli As Long, li As Long, lili As Long 
Dim D1 As Double, D2 As Double 
nbli = plage.Rows.Count 
nbch = 0 
If nbli < 3 Then 
  nbchange = 0 
Else 
  With plage 
    li = 2 
    D1 = .Cells(li, 1) - .Cells(li - 1, 1) 
    While D1 = 0 And li < nbli 
      li = li + 1 
      D1 = .Cells(li, 1) - .Cells(li - 1, 1) 
    Wend 
    If li = nbli Then 
      nbchange = 0 
    Else 
      lili = li 
      For li = lili + 1 To nbli 
        D2 = .Cells(li, 1) - .Cells(li - 1, 1) 
        If D1 * D2 < 0 Then 
          nbch = nbch + 1 
        End If 
        If D2 <> 0 Then 
          D1 = D2 
        End If 
      Next li 
    End If 
  End With 
End If 
nbchange = nbch 
End Function


la garantie n'est pas non plus assurée et il doit y avoir plus simple !!!!

bonne suite
0
Merci !
0