Moyenne automatique suite à un tri [RESOLU]

Moyenne automatique suite à un tri [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 15-05-2008 à 14:48:05    

Bonjour,
 
Tout d'abord un grand merci à tous les membres actifs de ce forum, qui m'a énormément aidé dans mon expoloration du VBA (Excel) jusqu'à présent.
 
Mon objectif actuel :
J'ai plusieurs colonnes avec filtre automatique. (une dizaine de colonnes et plus de 800 lignes, d'où le tri)
ex :  
ColonneE (tri)          ColonneG
Côté                          9
Dessus                      10
Dessus                      16
Côté                          7
Dessous                     8
Dessus                      11
    ...
 
Lorsque j'effectue un tri (admettons "Dessus" ) je voudrais la moyenne (et à terme le mini et le maxi aussi) de toutes les lignes qui ont été gardées. (donc ici moyenne = 12.33)
Pour le moment le code m'en approchant le plus était celui-là :
 
Private Sub MoyenneMiniMaxi()
Dim plage As Variant
Set plage = Range(Cells(8, 7), Cells(8, 7).End(xlDown))              'Ligne 8 c'est un titre, et c'est là où se trouve la flèche de tri automatique
Range("G6" ) = Application.WorksheetFunction.Average(plage)      'mes valeurs commencent à la ligne 9, donc G6 est une cellule vide.
End Sub
 
Le souci de ce code, c'est que si le premier "dessus" qu'il trouve est en ligne 22, et que le dernier est en ligne 30, il fera la moyenne en intégrant toutes les valeurs de la ligne 9 à la ligne 30 sans prendre en compte uniquement les valeurs triées affichées à l'écran.
 
J'espère avoir été clair, merci par avance pour votre aide.


Message édité par Silarion le 21-05-2008 à 09:17:53
Reply

Marsh Posté le 15-05-2008 à 14:48:05   

Reply

Marsh Posté le 16-05-2008 à 03:31:23    

Salut,solution bestiale : réécrire en ne prenant en compte que les cells(i,7).Height>0 avec une variable Total=Total +Cells(i,7) et un compteur pour au final faire Total/Compteur


Message édité par kiki29 le 16-05-2008 à 04:03:18
Reply

Marsh Posté le 16-05-2008 à 09:38:09    

Y'a beaucoup mieux : la fonction SOUS.TOTAL() => http://office.microsoft.com/fr-fr/ [...] 31036.aspx


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 19-05-2008 à 14:28:05    

Bonjour,
Merci de vos réponses ! Je vais les étudier attentivement. Mes excuses pour ma réponse tardive, j'étais en déplacement. Je placerai ds ce post le code final qd j'y parviendrai.   ;)  
Salutations

Reply

Marsh Posté le 21-05-2008 à 09:16:18    

Code résolvant mon problème :
 
Sub MoyenneMiniMaxiImport()
 
Range("G2" ) = Application.WorksheetFunction.Subtotal(102, Range("G8", [G65536].End(xlUp)))          'nombre de valeurs gardées dans la colonne
Range("G3" ) = Application.WorksheetFunction.Subtotal(105, Range("G8", [G65536].End(xlUp)))          'Valeur Min
Range("G4" ) = Application.WorksheetFunction.Subtotal(104, Range("G8", [G65536].End(xlUp)))          'Valeur Max
Range("G5" ) = Application.WorksheetFunction.Subtotal(101, Range("G8", [G65536].End(xlUp)))          'Valeur Moyenne
 
End Sub

Reply

Marsh Posté le 21-05-2008 à 09:25:49    

Silarion a écrit :

Code résolvant mon problème :
 
Sub MoyenneMiniMaxiImport()
 
Range("G2" ) = Application.WorksheetFunction.Subtotal(102, Range("G8", [G65536].End(xlUp)))          'nombre de valeurs gardées dans la colonne
Range("G3" ) = Application.WorksheetFunction.Subtotal(105, Range("G8", [G65536].End(xlUp)))          'Valeur Min
Range("G4" ) = Application.WorksheetFunction.Subtotal(104, Range("G8", [G65536].End(xlUp)))          'Valeur Max
Range("G5" ) = Application.WorksheetFunction.Subtotal(101, Range("G8", [G65536].End(xlUp)))          'Valeur Moyenne
 
End Sub


Tu n'as pas besoin d'une  macro pour faire ca, c'est une perte de temps
Il suffit de mettre dans la cellule G2, la formule Subtotal(102, Range(G8:G65536)) et ainsi de suite....


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed