IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Faire la somme des plus grandes valeurs d'une colonne


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Faire la somme des plus grandes valeurs d'une colonne
    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

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 431
    Points
    12 431
    Par défaut
    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.

  3. #3
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    en faisant 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
    Il y a d'autres solutions, celle-ci est simple

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonjour à tous

    Citation Envoyé par cookie girl Voir le message
    ! Je cherche un moyen de faire la somme des 3, 4 ou 5 plus grandes valeurs d'une colonne selon mes besoins
    Tu peux le faire avec cette fonction paramétrable à mettre dans un module standard
    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
    Pour tester, tu peux l’appeler ainsi par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox cum_col(Range("A:A"), 5)

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    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...

  6. #6
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 134
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 134
    Points : 1 808
    Points
    1 808
    Par défaut
    Bonsoir,

    Citation Envoyé par cookie girl Voir le message
    anasecu je ne comprend pas tes lignes, pardon je suis débutante...
    Je t'ai fait une fonction paramétrable qui te permet "de faire la somme des 3, 4 ou 5 plus grandes valeurs d'une colonne selon mes besoins"
    Il te suffit de l'appeler avec la colonne et le nombre de valeurs que tu veux.

  7. #7
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 468
    Points : 16 348
    Points
    16 348
    Par défaut
    Bonjour

    C'est faisable sans VBA...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((RANG(Plage;Plage;0)<=5)*1;Plage)
    en adaptant Plage à ta plage de valeurs et le 5 si tu veux moins de 5 + grandes valeurs
    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 sur c'est toujours apprécié...

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci beaucoup 78 Chris ! simple et efficace
    je me suis cassé la tête pour rien

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    C'est faisable sans VBA...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD((RANG(Plage;Plage;0)<=5)*1;Plage)
    en adaptant Plage à ta plage de valeurs et le 5 si tu veux moins de 5 + grandes valeurs
    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...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] rechercher les deux plus grandes valeurs d'une colonne
    Par kingjon dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/06/2016, 15h10
  2. Calculs des plus grandes valeurs propres
    Par Swaraj dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 27/06/2011, 10h04
  3. La moyenne des plus grandes valeurs d'un champ
    Par aiss57 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 20/06/2009, 11h56
  4. VBA_E : Selection des 5 plus grandes valeurs d'une colonne..
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/09/2006, 17h39
  5. vba-Excel-Plus grande valeur d'une colonne
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 33
    Dernier message: 08/08/2006, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo