Excel croissance décroissance

Résolu
Alex -  
 Alex -
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 !

2 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    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
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
    1. Alex
       
      Merci !
      0