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

Résolu
Utilisateur anonyme -  
jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   -
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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    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. Utilisateur anonyme
       
      Malheureusement Jordane, je ne peux pas utiliser de VBA.

      Mais effectivement, cela semble être ce que je cherche.
      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > 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
    2. Utilisateur anonyme
       
      C'est fait, merci Jordane. :)
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      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. Utilisateur anonyme
       
      Me voilà dans une situation gênante... Cette formule fonctionne parfaitement, contrairement aux autres !

      Merci infiniment ccm81 !!
      0
    3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832 > Utilisateur anonyme
       
      Vraiment ? 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. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    il te faut donner ici le lien fourni par cjoint.com
    0
    1. Utilisateur anonyme
       
      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. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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. Utilisateur anonyme
       
      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. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    @ jordane45
    as tu testé mes propositions, moi toujours ?
    https://www.cjoint.com/?3BewBgRMbpH

    Cdlmnt
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       

      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
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. Utilisateur anonyme
       
      Bonsoir,

      Votre formule ne m'indique pas la bonne valeur. Une idée ?
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      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. Utilisateur anonyme
       
      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
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. Utilisateur anonyme
       
      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
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. Utilisateur anonyme
       
      Tout à fait !
      0