Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Somme d'une plage suite à un filtre (nombre de lignes variable)

4 réponses
Avatar
Dan
Bonjour,


Suite à un filtre entre 2 dates ..., j'ai une colonne où il faudrait faire
une somme

le résultat devant apparaitre en 2 lignes après la dernière ligne de la
sélection j'arrive à
cette procédure...
Sub somme_selection()
Range("H5").Select
Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-7]C[0]:R[-2]C[0])"

' et là le format de la cellule ....
Selection.Columns.AutoFit
End sub

Le problème est que nombre de lignes est variable et doit être pris en
compte dans la somme
(je m'oriente vers selection.row.count... pour remplacer le -7 dans la
formule SUM)
Merci pour votre aide...

Dan...

4 réponses

Avatar
SL
Bonjour

Je pense que la fonction SOUS.TOTAL(...;9) devrait faire l'affaire.
VBA inutile.

Stéphane


"Dan" a écrit dans le message de news:

Bonjour,


Suite à un filtre entre 2 dates ..., j'ai une colonne où il faudrait faire
une somme

le résultat devant apparaitre en 2 lignes après la dernière ligne de la
sélection j'arrive à
cette procédure...
Sub somme_selection()
Range("H5").Select
Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-7]C[0]:R[-2]C[0])"

' et là le format de la cellule ....
Selection.Columns.AutoFit
End sub

Le problème est que nombre de lignes est variable et doit être pris en
compte dans la somme
(je m'oriente vers selection.row.count... pour remplacer le -7 dans la
formule SUM)
Merci pour votre aide...

Dan...




Avatar
michdenis
Bonjour Dan,

Tu pourrais utiliser quelque chose comme ceci en adaptant le nom de la feuille.
Columns(5) = 5 ième colonne de la plage où est en application le filtre automatique ... évidemment à adapter.


With Worksheets("Feuil3")
.Range("A25").Formula = "=subtotal(9, " & .Range("_FilterDatabase").Columns(5).Address & ")"
End With


Salutations!


"Dan" a écrit dans le message de news:
Bonjour,


Suite à un filtre entre 2 dates ..., j'ai une colonne où il faudrait faire
une somme

le résultat devant apparaitre en 2 lignes après la dernière ligne de la
sélection j'arrive à
cette procédure...
Sub somme_selection()
Range("H5").Select
Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-7]C[0]:R[-2]C[0])"

' et là le format de la cellule ....
Selection.Columns.AutoFit
End sub

Le problème est que nombre de lignes est variable et doit être pris en
compte dans la somme
(je m'oriente vers selection.row.count... pour remplacer le -7 dans la
formule SUM)
Merci pour votre aide...

Dan...
Avatar
Philippe Noss
Bonjour
ActiveCell.End(xlDown).Offset(1, 0).Formula = "=SUBTOTAL(9," & Range
(ActiveCell.Offset(1, 0), ActiveCell.End(xlDown)).Address & ")"

devrait fonctionner si la cellule avctive est sur l'entete du filtre
automatique (la cellule avec la fleche)


Philippe NOSS
http://nossphil.perso.cegetel.net/exoutils.html
Avatar
Dan
Merci à vous 3

J'ai eu du mal...
j'ai appliqué ça en faisant une copie de la sélection dans une autre
feuille
Total_sélection = Evaluate("=sum(" & (Range("H6").Address(0, 0) & ":" &
Range("H6").End(xlDown).Address(0, 0) & ")"))
ActiveCell.Value = Total_sélection
A bientôt

Dan...

"Dan" a écrit dans le message de news:

Bonjour,


Suite à un filtre entre 2 dates ..., j'ai une colonne où il faudrait faire
une somme

le résultat devant apparaitre en 2 lignes après la dernière ligne de la
sélection j'arrive à
cette procédure...
Sub somme_selection()
Range("H5").Select
Selection.End(xlDown).Select
ActiveCell.FormulaR1C1 = "=SUM(R[-7]C[0]:R[-2]C[0])"

' et là le format de la cellule ....
Selection.Columns.AutoFit
End sub

Le problème est que nombre de lignes est variable et doit être pris en
compte dans la somme
(je m'oriente vers selection.row.count... pour remplacer le -7 dans la
formule SUM)
Merci pour votre aide...

Dan...