Se connecter avec
S'enregistrer | Connectez-vous

Total de tous les sous totaux avec condition

Dernière réponse : dans Programmation

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

  1. Sub InsertionLigSom()
  2. Dim Lig As Integer
  3. Dim Lig_Deb As Integer
  4.  
  5. Worksheets("Feuil1").Range("A1").Sort Key1:=Worksheets("Feuil1").Columns("H"), order1:=xlDescending, Header:=xlGuess
  6.  
  7. ' Boucle tant que pas vide
  8. Lig = 2: Lig_Deb = Lig
  9. Do While Not IsEmpty(Cells(Lig, "H")) And Cells(Lig, "H") >= 10000
  10. Lig = Lig + 1
  11. derniersup = Lig
  12. Loop
  13. Cells(Lig, "H").EntireRow.Insert
  14. Cells(Lig, "H").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  15. Cells(Lig, "I").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  16. somme1 = Cells(Lig, "H").Formula
  17. Cells(Lig, "J").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  18. Cells(Lig, "K").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  19.  
  20. Lig = Lig + 1: Lig_Deb = Lig
  21. Do While Not IsEmpty(Cells(Lig, "H")) And Cells(Lig, "H") >= 4000
  22. Lig = Lig + 1
  23. dernierinf = Lig
  24. Loop
  25. Cells(Lig, "H").EntireRow.Insert
  26. Cells(Lig, "H").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  27. somme2 = Cells(Lig, "H").Formula
  28. Cells(Lig, "I").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  29. Cells(Lig, "J").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  30. Cells(Lig, "K").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  31.  
  32. Lig = Lig + 1: Lig_Deb = Lig
  33. Do While Not IsEmpty(Cells(Lig, "H"))
  34. Lig = Lig + 1
  35. Loop
  36. Cells(Lig, "H").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  37. somme3 = Cells(Lig, "H").Formula
  38. Cells(Lig, "I").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  39. Cells(Lig, "J").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  40. Cells(Lig, "K").Formula = "=SUM(R" & Lig_Deb & "C:R" & Lig - 1 & "C)"
  41. 'Voici ce que j'ai tenté pour solutionner mon problème :
  42. Cells(Rows.Count, 8).End(xlUp).Offset(2).Value = ("somme1" + "somme2" + "somme3")

Autres pages sur : total totaux condition

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

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)

----------

  1. Cells(Lig, "H" ).EntireRow.Insert
Pas mal. Plus concis :
  1. 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 :
  1. Dim somme1 As Range, somme2 As Range, somme3 As Range
  2. ...
  3. Set somme1 = Cells(Lig, "H" )
  4. ...
  5. Set somme2 = Cells(Lig, "H" )
  6. ...
  7. Set somme3 = Cells(Lig, "H" )
  8. ...
  9. Cells(Rows.Count, 8).End(xlUp).Offset(2).Formula = "=SUM(" & somme1.Address & ", " & somme2.Address & ", " & somme3.Address & ")"
Lassé par la pub ? Créez un compte