Soustraction sur base des premières valeurs

Résolu
nicmass Messages postés 4 Statut Membre -  
nicmass Messages postés 4 Statut Membre -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. nicmass Messages postés 4 Statut Membre
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK, bien reçu
      combien de lignes peux tu avoir (environ) ?
      0
    2. nicmass Messages postés 4 Statut Membre
       
      J'ai environ 12 000 lignes dans mon tableau excel
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. nicmass Messages postés 4 Statut Membre
       
      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