Fonction pour calculer la somme de différences consécutives

Résolu
Bonjour,

Je cherche une fonction qui permet de calculer la somme des différences consécutives dans une série de données.

Plus simplement, soit une série de données :

A1 = 2
A2 = -1
A3 = 4
A4 = -7
etc.

Je souhaite calculer la différence entre A1 et A2 (ici 3), puis entre A2 et A3 (ici 5), puis entre A3 et A4 (ici 11), etc. Et enfin, je voudrais la somme de toutes ces différences (ici 19). C'est un peu lourd à faire manuellement, n'y a-t-il pas une fonction pour cela ?

Merci d'avance,

Cordialement,
PN6K12.

8 réponses

  1. Modérateur
    Bonsoir

    Par formule je ne sais pas... mais en VBA :
    Function SommeInterval(plage As Range)
     Application.Volatile
     Dim resultat As Double
     Dim valcellprec As Double
     Dim firstVal As Double
     valcellprec = 0
     resultat = 0
     For Each cell In plage
      valcell = cell.Value
      If valcell <> "" Then
       resultat = resultat + (Abs(valcellprec - valcell))
       valcellprec = valcell
      End If
    Next
     firstVal = plage(1, 1)
     resultat = resultat - firstVal
     SommeInterval = resultat
    End Function
    
    


    Et pour l'utiliser... c'est comme pour les autres formules d'excel...
    =SommeInterval(A1:A4)


    1
    1. Malheureusement Jordane, je ne peux pas utiliser de VBA.

      Mais effectivement, cela semble être ce que je cherche.
      0
    2. Modérateur
      @Utilisateur anonyme
      cela semble être ce que je cherche.

      Oui je pense ( pour avoir testé différentes combinaisons.. le resultat tombe juste à tous les coups...)

      je ne peux pas utiliser de VBA.

      Dans ce cas... aucune idée.
      J'ai fait comme les autres participants... à base de sommeprod...abs et autre..... je n'ai pas trouvé la formule miracle.

      J'espère qu'une personne plus inspirée te trouvera la solution à ta question....
      Bonne soirée.
      0
    3. C'est fait, merci Jordane. :)
      0
  2. pour la somme des valeurs absolues des différences il y a ceci
    =SOMMEPROD(ABS($A$1:$A$9-$A$2:$A$10))
    1
    1. Modérateur
      Bonjour CCM81 ....
      Juste pour savoir... tu testes tes formules avant de les proposer ?
      car pour l'instant il me semble qu'aucune de tes propositions ne donne le résultat escompté..... :-)
      0
    2. Me voilà dans une situation gênante... Cette formule fonctionne parfaitement, contrairement aux autres !

      Merci infiniment ccm81 !!
      0
    3. Modérateur
      @Utilisateur anonymeVraiment ? Oo
      J'ai testé et ne suis pas retombé sur les bonnes valeurs...

      Je reteste ça de suite et reviens faire mes excuses au besoin à CCM

      Bon ben pas d'excuses...
      J'ai beau tester dans tous les sens.. je ne vois pas en quoi le résultat obtenu est le bon....
      Avec sa formule.. j'obtiens 26....
      @PN6K12 .. tu peux me confirmer qu'avec les chiffres que tu as donné au début et cette formule tu obtiens bien 19 ????
      0
    4. Et on aurait eu plus vite fait si tu avais donné la méthode attendue du post #11 plus tôt !!!!

      Allez bonne nuit à tous
      0
  3. il te faut donner ici le lien fourni par cjoint.com
    0
    1. Je veux bien vous donner un fichier, mais je n'ai rien de plus à mettre que ce qu'il y a plus haut.
      0
  4. Bonsoir,

    Pas tout compris, mais teste en B2 cette formule

    =SI(A1-A2>=0;A1-A2;A2-A1)

    ensuite faire la somme de la plage incrémentée

    =SOMME(B2:B50) par exemple
    0
    1. Comme l'a très bien souligné ccm81, il existe la fonction ABS.

      Seulement voilà, cette étape intermédiaire, où je calcule les différences absolues, ne doit pas apparaitre dans mon tableur.

      Je cherche donc une fonction qui me permettrait d'automatiser ce calcul :
      ABS(A1-A2)+ABS(A2-A3)+ABS(A3-A4), etc.
      0
    2. Re-salut Mike,

      Je ne sais pas qui distribue les -1 à tour de bras, c'est largement immérité puisque tu as été le premier à flairer la valeur absolue dès 21h33 (elle était bien cachée non ?) je te remets le compteur à 0

      Bonne soirée à toi
      0
  5. @ jordane45
    as tu testé mes propositions, moi toujours ?
    https://www.cjoint.com/?3BewBgRMbpH

    Cdlmnt
    0
    1. Modérateur

      as tu testé mes propositions, moi toujours ?

      Oui sinon je ne me serais surement pas permis une telle remarque....

      La formule que PK signale comme OK .. me retourne 26 .... (alors que normalement cela devrait être 19 non ?)

      Je n'ai pas accès à cijoint depuis le réseau de ma boite.
      Je regarderai ton fichier dès que possible car je ne comprend pas cette différence de résultat.

      Bonne soirée.

      EDIT : EN effet... ça marche bien.
      https://forums.commentcamarche.net/forum/affich-31501674-fonction-pour-calculer-la-somme-de-differences-consecutives#26
      0
  6. Bonsoir

    La plage à traiter est A1:A10
    La somme de toutes les différences
    =SOMME(A1:A9)-SOMME(A2:A10)

    Exemple
    https://www.cjoint.com/?3Bevr3vpY8J

    Attention : formule et fichier modifiés

    Cdlmnt
    -1
    1. Bonsoir,

      Votre formule ne m'indique pas la bonne valeur. Une idée ?
      0
    2. as tu vu la modification et le fichier joint

      Si ça ne correspond pas, complètes le fichier avec le résultat attendu et renvoies le avec cjoint.com
      0
    3. Oui, merci, j'ai également précisé les valeurs attendues dans mon post.

      En fait, ce n'est pas le calcul que je cherche à automatiser. Je cherche plutôt la somme des variations entre chaque donnée. Vous voyez ?
      0
  7. 1.Je souhaite calculer la différence entre A1 et A2 (ici 3), puis entre A2 et A3 (ici 5), puis entre A3 et A4 (ici 11), etc. Et enfin, je voudrais la somme de toutes ces différences (ici 19)
    2Je cherche plutôt la somme des variations entre chaque donnée

    c'est ce que fait la fomrule
    =SOMME(A1:A9)-SOMME(A2:A10)
    A1-A2+A2-A3+A3-A4+A4-A5+A5-A6+A6-A7+A7-A8+A8-A9+A9-A10
    = (A1+A2+...+A9)-(A2+A3+...+A10)
    voir le fichier modifié
    https://www.cjoint.com/?3BevOwAqDBW

    ou encore plus simple (mais formule plus compliquée)
    =A1-A10

    si ce n'est pas ça, sans le fichier demandé, je ne peux rien pour toi
    -1
    1. Non, ce n'est pas ça. Vous enlevez les parenthèses pour chaque différence, alors qu'elles sont obligatoires. Et puis les différences doivent être absolues.

      Je cherche à automatiser :
      ABS(A1-A2)+ABS(A2-A3)+ABS(A3-A4), etc. C'est en fait une somme de différences, et non une différence de sommes.

      Voici mon fichier :
      https://www.cjoint.com/c/EBeweqzFui8
      J'y ai intégré des commentaires.
      0
  8. Bonsoir Mike

    pour la somme des valeurs absolues des différences il y a
    B2=ABS(A2-A1)
    mais ça ne correspond pas au résultat attendu (19) du post 0

    Cdlmnt
    -1
    1. Tout à fait !
      0