Bonjour à tous ! Je cherche un moyen de faire la somme des 3, 4 ou 5 plus grandes valeurs d'une colonne selon mes besoins. Etant débutante en VBA je n'ai aucune idée de comment faire
Merci d'avance![]()
Bonjour à tous ! Je cherche un moyen de faire la somme des 3, 4 ou 5 plus grandes valeurs d'une colonne selon mes besoins. Etant débutante en VBA je n'ai aucune idée de comment faire
Merci d'avance![]()
Bonjour
Le moyen le plus simple ne serait-il pas de trier la colonne par ordre décroissant et d'y choisir et totaliser les "3, 4 ou 5" premières valeurs ?![]()
Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .
****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...
Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
Bonjour,
en faisant simple
Il y a d'autres solutions, celle-ci est simple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub Macro4() Range("C2:C13").Select Selection.Copy 'copie de la liste des valeurs (C1:C13 pour l'exemple) Range("G1").Select ActiveSheet.Paste 'coller quelque part (ici en G1) Application.CutCopyMode = False 'trier les valeurs ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("G1"), _ SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Feuil1").Sort .SetRange Range("G:G") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("G6").Select ActiveCell.FormulaR1C1 = "=SUM(R[-5]C:R[-1]C)" 'faire la somme des 5 premieres plus grandes valeurs somme5plusgrandes = Range("G6") 'récupérer la somme Range("A1") = somme5plusgrandes End Sub
Bonjour à tous
Tu peux le faire avec cette fonction paramétrable à mettre dans un module standard
Pour tester, tu peux l’appeler ainsi par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Function cum_col(plg As Range, nbr As Long) ' cumule les "nbr" plus grandes valeurs de "plg" cum_col = 0 For nbr = 1 To nbr cum_col = cum_col + Application.Large(plg, nbr) Next nbr End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox cum_col(Range("A:A"), 5)
Merci beaucoup à tous pour vos réponse et pardon pour ma réponse assez lente
J'aime beaucoup ta solution "helas" mais comment faire pour que le nombre de cellule qui soit sélectionné puisse être paramétrable ?
anasecu je ne comprend pas tes lignes, pardon je suis débutante...
Bonjour
C'est faisable sans VBA...
en adaptant Plage à ta plage de valeurs et le 5 si tu veux moins de 5 + grandes valeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SOMMEPROD((RANG(Plage;Plage;0)<=5)*1;Plage)
Chris
PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
----------------------------------------------------------------------------------------------
En cas de résolution, n'hésitez pas cliquer surc'est toujours apprécié...
Merci beaucoup 78 Chris ! simple et efficace
je me suis cassé la tête pour rien
Bonjour à tous !
78chris , dans cet exemple où on souhaite la somme des 5 plus grandes valeurs, admettons que dans ta plage de valeurs, la 5ème plus grande existe plusieurs fois (par exemple 3 fois), ne risque t’on pas d’avoir une somme de 7 valeurs ??
Je ne sais pas si j’ai été bien clair...![]()
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager