Résolu Total de tous les sous totaux avec condition

  • Auteur de la discussion fopy12
  • Date de début

fopy12

Habitué
Salut le forum
j 'aurai besoin d'une aide.
la macro ci dessus me permet d'insérer une ligne dans 3 cas :
- cas1 : lorsque les montants de la colonne H sont > à 10 000
- cas2 : lorsque les montants de la colonne H sont entre 4 000 et à 10 000
- cas3 : lorsque les montants de la colonne H sont < à 4 000
Puis faire les sommes des 3 colonnes (H,I,J et K) dans chacun de ces cas-là et ce dans la ligne insérée.

Jusque là ça va, j'ai réussi à bidouiller quelque chose.
Mais mon problème est que je veux faire le somme de ces sous totaux (somme cas 1 + somme cas 2 + somme cas 3)et là je n'y arrive pas.

Merci d 'avance pour votre aide
voici mon code

Code:
Sub InsertionLigSom()
Dim Lig As Integer
Dim Lig_Deb As Integer
 
Worksheets("Feuil1").Range("A1").Sort Key1:=Worksheets("Feuil1").Columns("H"), order1:=xlDescending, Header:=xlGuess
 
' Boucle tant que pas vide
Lig = 2: Lig_Deb = Lig
    Do While Not IsEmpty(Cells(Lig, "H")) And Cells(Lig, "H") >= 10000
        Lig = Lig + 1
        derniersup = Lig
    Loop
        Cells(Lig, "H").EntireRow.Insert
        Cells(Lig, "H").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        Cells(Lig, "I").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        somme1 = Cells(Lig, "H").Formula
        Cells(Lig, "J").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        Cells(Lig, "K").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        
Lig = Lig + 1: Lig_Deb = Lig
    Do While Not IsEmpty(Cells(Lig, "H")) And Cells(Lig, "H") >= 4000
        Lig = Lig + 1
        dernierinf = Lig
    Loop
        Cells(Lig, "H").EntireRow.Insert
        Cells(Lig, "H").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        somme2 = Cells(Lig, "H").Formula
        Cells(Lig, "I").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        Cells(Lig, "J").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        Cells(Lig, "K").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        
Lig = Lig + 1: Lig_Deb = Lig
    Do While Not IsEmpty(Cells(Lig, "H"))
        Lig = Lig + 1
    Loop
        Cells(Lig, "H").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        somme3 = Cells(Lig, "H").Formula
        Cells(Lig, "I").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        Cells(Lig, "J").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
        Cells(Lig, "K").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
'Voici ce que j'ai tenté pour solutionner mon problème :
 Cells(Rows.Count, 8).End(xlUp).Offset(2).Value = ("somme1" + "somme2" + "somme3")
 

zeb

Modérateur
Meilleure réponse
Salut,

M'enfin, si tu utilises la notation R1C1, ce n'est pas Formula mais FormulaR1C1 qu'il faut utiliser !

Indente un peu mieux ton code, j'ai failli me gourer en le lisant un peu trop rapidement.

Où sont déclarées tes variables ? Utilise Option Explicit !! (sinon, j'te cause plus)

----------

Code:
Cells(Lig, "H" ).EntireRow.Insert
Pas mal. Plus concis :
Code:
Rows(Lig).Insert
:lol: spa vraiment ton problème actuellement.

----------

Ça va pas ton truc !
Tu as (les chiffres sont bidons), dans sommeX =SUM(R1C:R10C), ce qui te fait =SUM(R1C:R10C)+=SUM(R1C:R10C)+=SUM(R1C:R10C) dans la valeur de ta somme finale. :pfff:

Regarde plutôt :
Code:
Dim somme1 As Range, somme2 As Range, somme3 As Range
...
Set somme1 = Cells(Lig, "H" )
...
Set somme2 = Cells(Lig, "H" )
...
Set somme3 = Cells(Lig, "H" )
...
Cells(Rows.Count, 8).End(xlUp).Offset(2).Formula = "=SUM(" & somme1.Address & ", "  & somme2.Address & ", "  & somme3.Address & ")"
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 808
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut