Somme d'un champs dans une macro

Titi91

XLDnaute Nouveau
Bonjour,

Apres avoir fait une insertion de deux lignes dans mon tableau et donc séparé mon tableau en deux partis, je souhaiterai afficher a la fin de chaque colonne la somme respective des champs séparés. Mais dans ma macro je ne sais quelles cellules selectionner etant donnée que ces dernières changent a chaque fois de position suivant le nombre de ligne au départ. Voici le resultat de la fin de ma macro:

derlign = Range("B" & Rows.Count).End(xlUp).Row 'trouve la dernière ligne de la colonne B
Set trouve = Range("B2:B" & derlign).Find("TR", lookAt:=xlWhole) 'on utilise la méthode Find pour chercher "TR" dans la colonne B
If Not trouve Is Nothing Then Rows(trouve.Row).Resize(2).Insert Shift:=xlDown
ActiveCell.FormulaR1C1 = "=SUM(R[-18]C:R[-1]C)"
Range("G21").Select
Selection.AutoFill Destination:=Range("G21:H21"), Type:=xlFillDefault
Range("G21:H21").Select
Range("G32").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
Range("G32").Select
Selection.AutoFill Destination:=Range("G32:H32"), Type:=xlFillDefault
Range("G32:H32").Select
End Sub

Merci de votre aide.
 

Pièces jointes

  • Test macro.xls
    93.5 KB · Affichages: 69
  • Test macro.xls
    93.5 KB · Affichages: 76
  • Test macro.xls
    93.5 KB · Affichages: 77

Titi91

XLDnaute Nouveau
Re : Somme d'un champs dans une macro

Oups, effectivement dsl, j'ai encore du mal a voir les nouveaux messages je n'avais pas vu les reponses, aucune notification ne m'est apparue. Mais maintenant c'est bon grace à vous, j'ai pu regler mon premier probleme :)
 

Titi91

XLDnaute Nouveau
Re : Somme d'un champs dans une macro

merci pour votre réponse Dranreb, mais le probleme est que les sommes qui sont dans les cellules G32 et H32/ G21 et H21 peuvent se situer n'importe ou, le fichier en question ne fait que 27 lignes, si j'ai un fichier qui fait 500 lignes, les sommes devront alors apparaitre par exemple en G503 et H503.

En fait je n'arrive pas a trouver dans le langage VBA, le fait d'entrer ma formule dans la première cellule vide de la colonne G et H. De même pour l'insertion des deux lignes, il faudrait que je trouve la formule qui fasse la somme du champs à l'endroit ou j'ai effectué l'insertion. Sachant que l'insertion se fait dès que la macro rencontre le signe "TR" de la colonne B. Suivant le nombre de ligne cette insertion se fait également n'importe ou.

Merci de votre aide, je traite plusieurs dizaine de fichier de ce type par jour, je perd énormément de temps dans leur traitement excel, le fait de finir cette macro me donnerai une grande bouffé d'air
 

Dranreb

XLDnaute Barbatruc
Re : Somme d'un champs dans une macro

Dommage que vous insériez en tête et non en fin.
il suffirait alors d'insérer les 2 lignes devant la ligne total et la formule resterait juste.
D'ailleurs comment vous repérez la ligne total dont vous voulez changer la formule ?
Je n'ai pas vu ça dans votre programmation.
Il suffirait d'en récupérer le FormulaR1C1 puis de le remettre après: il ne change pas au bout du compte.
À+
 

Titi91

XLDnaute Nouveau
Re : Somme d'un champs dans une macro

Oui effectivement, vous avez raison, si vous voulez je peux inserer en fin si cela pose problème. Cependant, j'ai peur que la macro me fasse d'abord la somme de toute la colonne H et G.

Or, ce que je souhaiterai c'est que la macro ma fasse deux sommes distinctes des champs séparé par l'insertion. Au momment de l'insertion, une première formule somme situé à l'endroit de l'insertion qui additionne le premier champs de donnée situer au dessus.

Enfin une deuxième formule somme qui aditionne l'autre parti du tableau qui a été séparé par l'insertion de ligne. De la même facon, cette formule doit etre située à la fin du deuxième champs additionné.

Je remet mon fichier excel pour etre plus clair. La macro s'appelle "newmacro". L'insertionde ligne et les fonctions sommes en question sont à la fin de la macro:

Dim trouve As Range
derlign = Range("B" & Rows.Count).End(xlUp).Row 'trouve la dernière ligne de la colonne B
Set trouve = Range("B2:B" & derlign).Find("TR", lookAt:=xlWhole) 'on utilise la méthode Find pour chercher "TR" dans la colonne B
If Not trouve Is Nothing Then Rows(trouve.Row).Resize(2).Insert Shift:=xlDown
Range("G21").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-18]C:R[-1]C)"
Range("G21").Select
Selection.AutoFill Destination:=Range("G21:H21"), Type:=xlFillDefault
Range("G21:H21").Select
ActiveWindow.SmallScroll Down:=15
Range("G32").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-9]C:R[-1]C)"
Range("G32").Select
Selection.AutoFill Destination:=Range("G32:H32"), Type:=xlFillDefault
Range("G32:H32").Select
ActiveWindow.SmallScroll Down:=-24
End Sub

Merci encore d'avance
 

Pièces jointes

  • Test macro.xls
    92.5 KB · Affichages: 54
  • Test macro.xls
    92.5 KB · Affichages: 75
  • Test macro.xls
    92.5 KB · Affichages: 73

Titi91

XLDnaute Nouveau
Re : Somme d'un champs dans une macro

Et en ce qui concerne la ligne totale, c'est bien là le souci, je n'arrive pas à repérer en langage VBA les deux ligne totales que je souhaite faire apparaitre, lorsque je selectionne des cellules précises c'est ok mais mon problème est que ces cellules ne sont pas fixes en fonction du nombre de ligne sur le tableau...
 

Dranreb

XLDnaute Barbatruc
Re : Somme d'un champs dans une macro

Ah, ce sont les lignes total elles même que vois souhaitez faire apparaître ? Je croyais que c'étaient des lignes qui se rajoutaient dans les différents paquets.
Ecoutez, il y a un truc qui se charge de tout: Données, Sous-totaux...
voyez si vous pouvez créer un squelette de macro avec ça.
À+
 

Titi91

XLDnaute Nouveau
Re : Somme d'un champs dans une macro

Sayé j'ai trouvé en fouillant un peu partout et grace à vous internautes; voici le résultat de mon problème:

Dim derlign%, Lg%
Dim trouve As Range
derlign = Range("B" & Rows.Count).End(xlUp).Row 'trouve la dernière ligne de la colonne B
Set trouve = Range("B2:B" & derlign).Find("TR", lookAt:=xlWhole) 'on utilise la méthode Find pour chercher "TR" dans la colonne B
If Not trouve Is Nothing Then Rows(trouve.Row).Resize(2).Insert Shift:=xlDown
'--- 1er sous-total ---
Lg = trouve.Row
Cells(Lg - 2, "g") = "=SUM(g3:g" & Lg - 3 & ")"
Cells(Lg - 2, "h") = "=SUM(h3:h" & Lg - 3 & ")"
With Range("a" & Lg - 2 & ":h" & Lg - 1)
.BorderAround Weight:=xlMedium
.Interior.ColorIndex = 45
End With
With Cells(Lg - 2, "g")
.BorderAround Weight:=xlMedium
.Interior.ColorIndex = 43
End With
With Cells(Lg - 2, "h")
.BorderAround Weight:=xlMedium
.Interior.ColorIndex = 43
End With
'--- 2ème sous-total (à la fin) ---
derlign = Range("B" & Rows.Count).End(xlUp).Row + 1
Range("a" & Lg - 2 & ":h" & Lg - 1).Copy Destination:=Range("a" & derlign)
Cells(derlign, "g") = "=SUM(g" & Lg & ":g" & derlign - 1 & ")"
Cells(derlign, "h") = "=SUM(h" & Lg & ":h" & derlign - 1 & ")"
End Sub

Merci pour toutes tes remarques Dranreb, elles m'ont été très utiles :)
 

Discussions similaires

  • Question
Microsoft 365 Formules
Réponses
2
Affichages
422
Réponses
5
Affichages
335

Statistiques des forums

Discussions
312 203
Messages
2 086 183
Membres
103 152
dernier inscrit
Karibu