Somme des montants d'un filtre

Résolu
Messages postés
128
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 mai 2008
-
Messages postés
128
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 mai 2008
-
salut à tous,

voilà j'ai (pour simplifié) 2 colonnes sur ma feuille excel:

DATE pour la colonne A et MONTANT pour la colonne B.

j'ai placé un filtre automatique sur ces 2 colonnes.

egalement je me sers d'un textbox pour afficher la somme de ma colonne montant.

jusque là tt beigne...

Mais mon intérêt ac ce filtre serait de pouvoir faire ds ce même textbox (ou a la rigueur ds un autre peu m'importe) la somme de ma colonne montant mais filtrée.

(précision je filtre en fonction de la date à l'aide d'un textbox).

le filtre masque simplement mes lignes non concernées, mais la somme de ma colonne montant me prends toute la colonne et ne tient pas compte du filtre... 

mon code pr la somme:
 (TextBox2.Text = WorksheetFunction.Sum(ActiveWorkbook.Worksheets(1).Columns("B:B")) 

je ne sais pas si je suis clair !?? mais merci pr votre coup de main..

@++ Achi.

4 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

essai ceci :

<small> Coloration syntaxique automatique </small>
Sub test() 
    Dim MaPlage As Range 
    Dim PLV As Long 


PLV = Columns(2).Find("", [B1], , , xlByRows, xlNext).Row 

Set MaPlage = Range(Cells(2, 2), Cells(PLV, 2)) 


TextBox1.Text = WorksheetFunction.Subtotal(9, MaPlage) 

End Sub 

<small> Coloration syntaxique automatique</small>

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut Achi,

pour mon code PLV, il y a plus simple mais c'est celui là quue je connais par coeur :

PLV --> abréviation pour Première Ligne VIde
Columns(2)  --> la recherche se fera dans la deuxième colonne
.Find(  --> fonction de recherche
"",   -->  ce que l'on recherche (ici, rien, une cellule vide)
[B1], , ,  --> à partir de où dans la 2ème colonne
xlByRows,   --> recherche par ligne (<> xlByColumns)
xlNext)  --> passe au prochain (si pas vide) par le bas ou la droite (<> xlPrevious)
.Row  --> ça me donne donc la ligne de cette cellule vide.
^^ ce code adapte ta plage a tes données !

Concernant le 9 de la fonction SubTotal, il me semble (mais je n'en suis pas sûr) que c'est ce critère qui dit que la somme se fera que pour les cellules visibles.

J'espère avoir répondu à tes demandes ! 

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Messages postés
128
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 mai 2008

salut Mortalino,

Ton code fonctionne très bien... j'ai réussi à l'adapté à mon projet...

Bon j'ai compris en général ton code ... mais si jamais tu avais 2 min à consacrer à l'apprentissage d'un débutant  je te serais reconnaissant de bien vouloir m'expliquer en littéraire par exemple :
PLV = Columns(2).Find("", [B1], , , xlByRows, xlNext).Row 

puis aussi:
 pourquoi le 9 dans :
TextBox1.Text = WorksheetFunction.Subtotal(9, MaPlage)

Merci beaucoup pour ton code... 
@++ Achi
Messages postés
128
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 mai 2008

re,


parfait, tu as bien répondu à mes demandes, me voilà instruit d'un nouveau code... merci bien...

A bientôt sur le forum, @++ Achi.