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.
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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
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
-- 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
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
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 Subl'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
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é
Avec tous mes remerciements Claude et Banzai. Je n'en esperait vraiment pas autant. Je clos le sujet