Soustraction sur base des premières valeurs

Résolu
Bonjour,

Je cherche une formule me permettant de d'effectuer la manoeuvre décrite dans le fichier joint.

J'aimerai, pour chaque valeur de Trial_Index (valeurs allant de 1 à 52), utiliser la première valeur de current_fix_x pour effectuer une soustraction afin d'obtenir l'écart entre cette première donnée et toutes les autres.

Vu que l'explication est quelque peu laborieuse, j'ai effectué à la main un exemple dans le fichier ci-joint.

D'avance, Merci pour toute l'aide que vous pourrez m'apporter !

www.packupload.com/C3KG84XW1YR (pour l'exemple)

3 réponses

  1. Contributeur
    Bonjour

    packload qui emmène sur un sponsor obligatoire ... moi je zappe

    comme à peu près tout le monde sur ccm:

    mettre le classeur sans données confidentielles en pièce jointe sur
    http://cjoint.com/
    puis copier l'adresse du lien et la coller dans le message de réponse

    0
    1. Bonjour,

      voici le lien pour accéder au fichier qui illustre ce que j'aimerais pouvoir faire:
      https://www.cjoint.com/?3AqtvQebb6H

      Désolé pour packupload, je n'avais pas remarqué cette redirection sur sponsor obligatoire.

      Encore merci d'avance pour votre aide!

      Nicolas
      0
      1. Contributeur
        OK, bien reçu
        combien de lignes peux tu avoir (environ) ?
        0
      2. J'ai environ 12 000 lignes dans mon tableau excel
        0
    2. Contributeur
      re,

      J"avais anticipé le nombre de ligne car ton souci ressemble assez à cette discussion; coïncidence? :o)
      https://forums.commentcamarche.net/forum/affich-26910522-remplacement-plusieurs-valeurs-recopier-colonne-sous-condition#p26917603

      essaies
      Option Explicit
      Sub mesurer_ecart()
      Dim Maxi As Byte, Derlig As Long, T_fix(), T_diff()
      Dim Debut As Long, Fin As Long, Base As Single, Cpt_g As Byte, cpt_i As Long
      Dim start As Single 'test de rapidité à supprimer après essai
      
      start = Timer 'test de rapidité à supprimer après essai
      'initialisations
      Application.ScreenUpdating = False
      Derlig = Columns("C").Find("*", , , , , xlPrevious).Row
      T_fix = Application.Transpose(Range("D2:D" & Derlig).Value)
      Range("E2:E" & Derlig).ClearContents
      T_diff = Application.Transpose(Range("E2:E" & Derlig).Value)
      
      'collecte les données et fait la différence par index
      Maxi = Application.Max(Columns("C"))
      For Cpt_g = 1 To Maxi
           Debut = Columns("C").Find(Cpt_g, Range("C1"), xlValues).Row
           Fin = Columns("C").Find(Cpt_g, , , , , xlPrevious).Row
           Base = Cells(Debut, "D")
           For cpt_i = Debut - 1 To Fin - 1
                T_diff(cpt_i) = T_fix(cpt_i) - Base
           Next
      Next
      
      'restitutions
      With Range("E2:E" & Derlig)
           .Value = Application.Transpose(T_diff)
           .NumberFormat = "0.0"
      End With
      Application.ScreenUpdating = True 'test de rapidité à supprimer après essai
      MsgBox "durée : " & Timer - start & " .sec" 'test de rapidité à supprimer après essai
      
      End Sub
      


      Merci de me dire la durée pour tes 12000 lignes pour mes stats

      0
      1. Ca fonctionne à merveille! En 0.521 secondes!

        Et en effet ça n'est pas une coïncidence puisque Clément, que tu as déjà bien aidé, est un collègue :-)

        Merci beaucoup pour ton aide précieuse!

        Nicolas
        0