Bonjour mesdames, Bonjour Messieurs !
J'ai une colle surune Macro excel.
J'ai donc un fichier excel sur lequel se trouve un TCD. Celui ci ne me permettant pas d'obtenir les résultats souhaités (je ne peux pas installer de modules complémentaires) je retravaille juste à coté de celui ci 2 colonnes qui me permette à l'aide de la macro suivante d'obtenir quasiment les valeurs voulues :
Tout fonctionnes très bien. Cependant le problème est le suivant: Dans les formules "Somme..." les plages à prendre en compte sont de tailles différentes. Par consequent j'aimerais savoir si il existe un moyen pour faire un sorte que la macro détecte automatiquement la plage à prendre en compte ? Que ce soit en jouant sur les Couleurs (Ya surement mieux mais c'est peux être le plus simple) ou sur les résultats du TCD? Je ne sais pas
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Sub MAJCouleurs() Application.ScreenUpdating = False Dim c As Range For Each WS In ActiveWorkbook.Worksheets 'Formule remplissage des lignes blanches. Couleurs = 16777214 Dim LigneBlanche LigneBlanche = "=IF(OR(RC8=""AGPRO"",RC8=""AGTEC"",RC8=""AGING"",RC8=""AGAPP""),0,RC[-3])" 'Formules pour les sous totaux "Somme Eff. nec.". Couleurs = 1226495 Dim SousTotalEffNec SousTotalEffNec = "=SUMIFS(R[-3]C:R[-1]C,R[-3]C[-13]:R[-1]C[-13],""<>""&"""")" 'Forumles pour les sous totaux "Somme poids". Couleurs = 1226495 Dim SousTotalPoids SousTotalPoids = "=SUM(R[-2]C:R[-1]C)" 'Formule Total General. Couleur = 414452 Dim TotalGeneral TotalGeneral = "=SUMPRODUCT((LEFT(R[-5]C2:R[-1]C2,5)=""Total"")*(R[-5]C:R[-1]C))" 'Remplissage colonne R For Each c In WS.Range("R1:R140") If c.Interior.Color = 16777214 Then c.Formula = LigneBlanche If c.Interior.Color = 1226495 Then c.Formula = SousTotalEffNec If c.Interior.Color = 414452 Then c.Formula = TotalGeneral Next c For Each c In WS.Range("S1:S140") If c.Interior.Color = 16777214 Then c.Formula = LigneBlanche If c.Interior.Color = 1226495 Then c.Formula = SousTotalPoids If c.Interior.Color = 414452 Then c.Formula = TotalGeneral Next c Next WS End Sub
En pièce jointe un petit fichier exemple avec 3 Services (Vs contre 150 en vrai)
J'espère que je suis suffisamment clair... Sinon dites le moi je tenterais de faire mieux !
Merci d'avance pour l'aide que vous m'apporterez !!
Partager