Somme d'un champ dans une macro

Bonjour,

Grace à vous, j'ai déjà beaucoup avancé sur ma macro mais il me reste un point à eclaircir. 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.

37test-macro.zip (28.09 Ko)

Bonjour,

Normalement, tu n'as pas besoin de macro,

si tu insère ou supprime des lignes, les formules "Somme" suivent

où est le problème ?

Amicalement

Claude

Ce que je viens d'expliquer est en fait la fin d'un long processus. A la base mon tableau Excel ne ressemble pas du tout à ca. Sachant que je sors mes tableaux de SAP, suivant les différents compte comptables, le tableau Excel peut contenir de 1 à plusieurs milliers de ligne.

Pour traiter mes fichiers plus rapidement, j'utilise une macro qui sépare en deux parties les écritures comptables des écritures bancaires. Grace à ma macro, le fichier Excel est classé par ordre alphabétique, la macro insére alors deux lignes dès qu'elle rencontre le signe "TR" (colonne B de mon fichier, qui signifie écriture bancaire). C'est à partir de cette insertion que je souhaite que la macro exécute automatiquement la somme des champs séparé. Le probleme est que suivant le nombre de ligne, ces sommes peuvent se situer à n'importe qu'elle endroit du fichier.

J'espere que c'est plus clair maintenant, j'aimerai vraiment trouver une solution car je traite plusieurs dizaine de fichier par jour et je perds énormément de temps dans le traitement de ces fichiers qui sortent de SAP.

Amicalement, merci de ton aide

Titi91

re,

Grace à ma macro, le fichier Excel est classé par ordre alphabétique, la macro insére alors deux lignes dès qu'elle rencontre le signe "TR" (colonne B de mon fichier, qui signifie écriture bancaire).

il faudrait voir cette macro (ou mieux le fichier),

pour y insérer en même temps les formules "Somme"

enfin, si j'ai bien compris !

Claude

oui:), effectivement, j'ai cru mettre mon fichier excel est dans mon premier

18test-macro.zip (28.09 Ko)

message en pièce jointe, je vous le remet, la macro s'appelle "newmacro" est la formule sur l'insertion est quelques lignes avant la fin de la macro, dès que vous voyez ceci:

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

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

Encore merci de votre aide

18test-macro.zip (28.09 Ko)

-- 29 Juin 2011, 11:48 --

oui:), effectivement, j'ai cru mettre mon fichier excel est dans mon premier

message en pièce jointe, je vous le remet, la macro s'appelle "newmacro" est la formule sur l'insertion est quelques lignes avant la fin de la macro, dès que vous voyez ceci:

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

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

re,

On suppose qu'avant de lancer la macro, il n'y a pas ces lignes de sous-total ?

Ici pour test, la fin de ta macro,

Sub Claude()
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 & ")"
End Sub

l'ensemble demanderait à être revu, le début plante !

envoie la feuille avant macro

édit: j'ai oublié la dernière ligne de formule

    Cells(derlign, "h") = "=SUM(h" & Lg & ":h" & derlign - 1 & ")"

Claude

Bonjour

A voir

C'est parfait Claude, impeccable c'est exactement ce que je voulais je viens de tester sur plusieurs fichiers vierges, tous fonctionnent. Je ne sais pas comment te remercier.

Une dernière chose, tu viens de faire les sommes des colonnes souhaitées, si ce n'est vraiment pas trop te demander je souhaiterai ajouter les soldes de ces sommes, juste en dessous. J'ai enregistré le modele de la macro avec les formules necessaires pour ces soldes, macro nommée "finale"

Je t'ai egalement mis une page vierge de toute macro pour que tu vois que t'as macro fonctionnent.

Encore merci d'avance

Thierry

-- 29 Juin 2011, 15:22 --

Formidable Banzai 64, j'adore ton gros bouton de présentation, cela evite encore plus les gestes de souris inutiles. Ta macro fonctionnent également à merveille. Cela fait seulement à peine 3 jours que je suis inscrit sur votre site et il m'a vraiment été d'une grande utilité. Vous etes tous hyper réactif. Grace à vous, mon travail va etre largement facilité .

25fichier-fin.zip (28.31 Ko)

Bonjour

Avec le solde

Avec tous mes remerciements Claude et Banzai. Je n'en esperait vraiment pas autant. Je clos le sujet

Rechercher des sujets similaires à "somme champ macro"