Bonjour tout le monde,

débutant en VBA, je voudrais automatiser des formules de sommes conditionnelles:
- somme d'une colonne ou de plusieurs colonnes avec 1 condition
- adapter mes formules à un nombre de lignes variable

Du coups j'ai effectué mes formules en Excel avec l'enregistreur de macro => j'aimerai améliorer les macros déjà enregistrées.

Contexte:
- une worksheet "AAA N" avec des données de l'année N: 200 colonnes environs et un nombre de lignes variables (6000-7000 environ)
- une worksheet "AAA N-1" avec des données de l'année N-1 idem
- une worksheet "analyse" avec des tableaux récap N vs N-1

Je voudrais automatiser les formules dans les tableaux dans la worksheet "Analyse"

1) Formule: Si cellule en colonne A contient "UC" alors cellule en colonne B = "UC", sinon "EURO

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
EuroUc Macro
    Sheets("AAA N").Select
    Columns("L:L").Insert Shift:=xlToRight
    Range("L2").FormulaR1C1 = "=IF(ISNUMBER(SEARCH(""UC"",RC[-1])),""UC- "",""EURO- "")" 
    Range("L2").AutoFill Destination:=Range("L2:L5982")
    Range("L2:L5982").Select
    Range("L1").FormulaR1C1 = "EURO/UC"
    Range("L1").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent4
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
    End With
End Sub

2) formule somme conditionnelle d'un seule colonne fixe:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Range("C27").Select   'dans la worksheet "analyse"
    ActiveCell.FormulaR1C1 = _
        "=(SUMPRODUCT((('AAA N'!R2C13:R5982C13='analyse'!R2C4)*(OFFSET('AAA N'!R2C13:R5982C13,,MATCH('analyse de marge'!R5C27,'AAA N'!R1C14:R1C221,0))))))/10^6"
3) Formule somme conditionnelle d'une colonne:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
=SOMMEPROD(('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*('AAA N'!$T$2:$T$5982='analyse de marge'!$AB$5)*(DECALER('AAA N'!$T$2:$T$5982;;EQUIV('analyse de marge'!$AA$5;'AAA N'!$U$1:$HM$1;0)))))/10^6
4) Formule somme conditionnelle de plusieurs colonnes (format Excel):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
=(((SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AAA$7;'AAA N'!$N$1:$HM$1;0)))))))+(SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AAA$12;'AAA N'!$N$1:$HM$1;0))))))+(SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AAA$13;'AAA N'!$N$1:$HM$1;0))))))+(SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AAA$16;'AAA N'!$N$1:$HM$1;0))))))+(SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AA$18;'AAA N'!$N$1:$HM$1;0))))))+(SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AA$20;'AAA N'!$N$1:$HM$1;0))))))+(SOMMEPROD((('AAA N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AAA$23;'AAA N'!$N$1:$HM$1;0))))))+(SOMMEPROD((('BDT N'!$M$2:$M$5982='analyse de marge'!$D$2)*(DECALER('AAA N'!$M$2:$M$5982;;EQUIV('analyse de marge'!$AAA$24;'AAA N'!$N$1:$HM$1;0)))))))/10^6
N"hésitez pas à me demander plus de précisions.

merci pour votre aide,

cordialement