[MACRO] Additionner une plage en fonction d'un critère

GuizmoD

XLDnaute Nouveau
Bonjour à tous,

Me voilà face à un nouveau problème de macro.

j'ai commencé à écrire un code afin de réaliser un écart de deux colonnes en fonction d'un critère mais je ne vois pas comment je peux maintenant faire une addition des lignes d'écarts dont le nombre de cellules au dessus de cette somme varie et cette somme doit se situer seulement sur certaines lignes.

Il est difficile d'être clair je vous ai donc fait un fichier récap.

La somme que j'aimerais faire automatiquement se situe dans les cellules jaunes mais la ligne peut bouger car c'est une base de donnée alimenté automatiquement par macro et le nombre de ligne entre chaque somme peut également bouger.

La fonction "Xlup" ne me paraît pas adéquat car celle-ci s'arrête à la première cellule vide or il peut y en avoir entre chaque somme.

Je me fais des noeuds au cerveau depuis 2h j'en peux plus.

J'espère que vous allez savoir m'aider mais je n'en doute pas.

Merci d'avance

GuizmoD
 

Pièces jointes

  • FormuleAuto.xls
    44.5 KB · Affichages: 83

Dranreb

XLDnaute Barbatruc
Re : [MACRO] Additionner une plage en fonction d'un critère

Bonjour.

Comme ça:
VB:
Sub FormuleEBITDA()
Dim L As Long, LDéb1 As Long, LDéb2 As Long
DernLigne = Columns(1).Find("Chiffre d'affaires net").Row
LDéb1 = 2: LDéb2 = 2
For L = 2 To DernLigne
   If Cells(L, 1) <> "" Then
      If Cells(L - 1, 1) <> "" Then
         Cells(L, 8).FormulaR1C1 = "=SUBTOTAL(9,R" & LDéb1 & "C:R[-2]C)"
         LDéb1 = L + 1
      Else
         Cells(L, 8).FormulaR1C1 = "=SUBTOTAL(9,R" & LDéb2 & "C:R[-1]C)"
         LDéb2 = L + 1: End If
   ElseIf Cells(L, 3) <> "" And Not Cells(L, 3) Like "681*" _
      And Not Cells(L, 3) Like "781*" And Cells(L, 3) <> 777010 _
      And Cells(L, 3) <> 775217 And Cells(L, 3) <> 675217 _
      And Cells(L, 3) <> 777000 Then
      Cells(L, 8).Value = Cells(L, 7) - Cells(L, 6)
      End If
   Next L
End Sub
 

GuizmoD

XLDnaute Nouveau
Re : [MACRO] Additionner une plage en fonction d'un critère

Super je te remercie en effet ça fonctionne mais j'aimerais comprendre et la partie subtotal avec les variables Ldéb1 et Ldéb2 m'échappe. Peux-tu m'expliquer afin que je sache le refaire seul.

Cordialement,

GuizmoD
 

Dranreb

XLDnaute Barbatruc
Re : [MACRO] Additionner une plage en fonction d'un critère

D'abord il faut savoir qu'au contraire de la fonction SOMME, la fonction SOUS.TOTAL a pour propriété très commode de ne pas intégrer dans son calcul les valeurs des cellules qui utilisent elles même cette fonction. On peut donc englober sans se poser de question tout l'ensemble des lignes détail qu'on veut sommer. D'une ligne LDéb jusqu'a la ligne d'avant celle où on est. Mes LDéb commencent à 2. Le LDéb1 est appliqué quand on rencontre une colonne 1 non vide pour la 2ième fois consécutive. Et à l'avenir il repartira de la ligne suivant celle ou on est. Pour le LDéb1 c'est pareil sauf que c'est à chaque rencontre d'une cellule non vide en colonne A.
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 248
Messages
2 086 593
Membres
103 248
dernier inscrit
Happycat