différence entre 2 valeurs plusieurs fois selon critères dans une colonne en vba

dacyrix

XLDnaute Nouveau
Bonsoir,
bonjour,
dans l'exemple j'ai plusieurs valeurs qui s'incrémente en C;en A3 A11 j'ai le meme nombre 11 puis je passe à un autre nombre il peut parfois en avoir 2 ou + j'aurais voulu
calculer la différence entre la derniere valeur en C et la 1ere en C correspondant à changement en A
en D10=c10-c3 en D15=c15-c11 etc et cela autant de fois qu'il y a de données en A B C
merci de votre aide
voir fichier
 

Pièces jointes

  • bilan.xlsm
    15.8 KB · Affichages: 64
  • bilan.xlsm
    15.8 KB · Affichages: 60
  • bilan.xlsm
    15.8 KB · Affichages: 61

saya

XLDnaute Nouveau
Re : différence entre 2 valeurs plusieurs fois selon critères dans une colonne en vb

bonsoir dacyrix, le forum,

Voici une proposition dans le fichier joint. Il est peut-être possible de le faire par formule, mais j'avoue être bien plus à l'aise en VBA :)

En espérant que cela t'aide,
Saya
 

Pièces jointes

  • Copie de bilan.xlsm
    18.1 KB · Affichages: 67

R@chid

XLDnaute Barbatruc
Re : différence entre 2 valeurs plusieurs fois selon critères dans une colonne en vb

Salut @ tous,
une possibilite par deux formules :
en D3 :
Code:
=SI(NB.SI(A$3:A3;A3)=NB.SI($A$3:$A$15;A3);INDEX($C$3:$C$15;MAX(SI($A$3:$A$15=A3;LIGNE(INDIRECT("1:"&LIGNES($A$3:$A$15))))))-INDEX($C$3:$C$15;MIN(SI($A$3:$A$15=A3;LIGNE(INDIRECT("1:"&LIGNES($A$3:$A$15))))));"")
Formule matricielle @ valider par Ctrl+Maj+Entree et @ tirer vers le Bas.

Ou encore en D3 :
Code:
=SI(NB.SI(A$3:A3;A3)=NB.SI($A$3:$A$15;A3);DECALER($C$2;EQUIV($A3;$A$3:$A$15;0)+NB.SI($A$3:$A$15;$A3)-1;)-DECALER($C$2;EQUIV($A3;$A$3:$A$15;0););"")
Formule @ valider par une simple Entree et @ tirer vers le Bas.
Voir PJ
Amicalement
 

Pièces jointes

  • bilan.xlsm
    16.9 KB · Affichages: 66
  • bilan.xlsm
    16.9 KB · Affichages: 67
  • bilan.xlsm
    16.9 KB · Affichages: 64

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : différence entre 2 valeurs plusieurs fois selon critères dans une colonne en vb

Bonsoir dacyrix,

Un essai par VBA.
Code:
Sub DerMoinsPrem()
Dim T, i, First
Range(Range("A3"), Cells(Rows.Count, "A").End(xlUp)).Offset(, 3).ClearContents
T = Range(Range("A3"), Cells(Rows.Count, "C").End(xlUp)).Value
First = T(1, 3)
For i = 1 To UBound(T, 1) - LBound(T, 1)
If T(i, 1) <> T(i + 1, 1) Then
    Cells(2 + i, "D") = T(i, 3) - First
    First = T(i + 1, 3)
End If
Next i
Cells(2 + i, "D") = T(i, 3) - First
Range(Range("A3"), Cells(Rows.Count, "A").End(xlUp)).Offset(, 3).NumberFormat = "0"" t"""
End Sub
 

Pièces jointes

  • Der-Prem v2.xlsm
    21.5 KB · Affichages: 61
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 217
Messages
2 086 353
Membres
103 195
dernier inscrit
martel.jg