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

  • Initiateur de la discussion Initiateur de la discussion dacyrix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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

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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour