Moyenne automatique suite à un tri [RESOLU] - VB/VBA/VBS - Programmation
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
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
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
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
Marsh Posté le 21-05-2008 à 09:25:49
Silarion a écrit : Code résolvant mon problème : |
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....
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