Addition de doublons

Bonjour à tous !!

Je cherche à additionner doublons de la colonne A. Ensuite je souhaite trouver les 5 plus grandes sommes et les 5 plus petites.

Sachant que le fichier est amener à changer donc je ne peux pas utiliser la fonction Somme.si car le nom des entreprises n'est pas connu à l'avance.

J'avais imaginé un loop for each cell in range, mais je suis un petit débutant en VBA, donc je suis perdu

J'espère que je suis clair

Merci de votre aide

Un fichier joint en guise d'exemple...

28brouillon.xlsx (11.28 Ko)

Bonjour,

Ensuite je souhaite trouver les 5 plus grandes sommes et les 5 plus petites

Y a t'il une chance (même sur trois trillions ) qu'il y ait des ex-aequo?

Bonjour Pijaku,

Oui, il y a une certaine chance qu'il y est des ex-aequo en plus...

Oui, il y a une certaine chance qu'il y est des ex-aequo en plus...

Super...

Mais ça ne me dit pas quoi faire en cas d'ex-aequo dans les 5 premières ou 5 dernières places...

Qu'est ce que tu veux comme résultat?

En cas de de 5 top ex-aequo ou 5 ex-aequo "faible", il faudrait les classer par ordre alphabétique dans un tableau d'une autre feuille qui est de la forme :

5 meilleures ventes 5 pires ventes

Bonjour,

Une proposition à étudier.

Cdlt.

46brouillon.xlsm (24.31 Ko)

Bonjour Jean-Eric,

Votre proposition est intéressante, mais je voudrais passer par du code afin d'afficher directement les noms des entreprises (sans les quantités) sur une feuille de reporting.

Re,

Une autre proposition, mais si tu donnes à chaque fois de nouvelles informations et contraintes...

Cdlt.

26brouillon.xlsm (27.46 Ko)

Voici ma proposition par macro :

Sub SommeParEntreprise()
   Dim Dic As Object, Tb, i As Long, Rng As Range, Plage As Range
   'chargement des données
   Set Dic = CreateObject("Scripting.Dictionary")
   Tb = Range("A2:B" & [A65000].End(xlUp).Row)
   For i = LBound(Tb) To UBound(Tb)
      Dic(Tb(i, 1)) = Dic(Tb(i, 1)) + Tb(i, 2)  'calcul des sommes
   Next i
   'restitution des données
   [C:K].ClearContents
   'Somme par entreprises
   [D2].Resize(Dic.Count, 1) = Application.Transpose(Dic.Keys)
   [E2].Resize(Dic.Count, 1) = Application.Transpose(Dic.Items)
   [D1].Sort Key1:=[D2], Order1:=xlAscending, Header:=xlYes
   '5 plus grandes
   [G2].Resize(Dic.Count, 1) = Application.Transpose(Dic.Keys)
   [H2].Resize(Dic.Count, 1) = Application.Transpose(Dic.Items)
   Set Rng = Range("H2:H" & [H65000].End(xlUp).Row)
   Set Plage = Range("G2:H" & [H65000].End(xlUp).Row)
   Tri ActiveSheet.Name, Rng, Plage, 2
   Range("G8:H" & [G65000].End(xlUp).Row).ClearContents
   '5 plus petites
   [J2].Resize(Dic.Count, 1) = Application.Transpose(Dic.Keys)
   [K2].Resize(Dic.Count, 1) = Application.Transpose(Dic.Items)
   Set Rng = Range("K2:K" & [K65000].End(xlUp).Row)
   Set Plage = Range("J2:K" & [K65000].End(xlUp).Row)
   Tri ActiveSheet.Name, Rng, Plage, 1
   Range("J8:K" & [K65000].End(xlUp).Row).ClearContents
End Sub

Sub Tri(Feuille As String, Rng As Range, Plage As Range, Ordre As Integer)
   With ActiveWorkbook.Worksheets(Feuille).Sort
      .SortFields.Clear
      .SortFields.Add Key:=Rng, SortOn:=xlSortOnValues, Order:=Ordre, DataOption:=xlSortNormal
        .SetRange Plage
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Certainement trop tard, mais peut être utile...

Merci à tous pour vos réponse...

Je vais réussir mon travail avec toutes vos indications maintenant

Excusez-moi d'abuser mais je n'arriver pas à retravailler le code...

Comment puis-je faire pour que cette variable :

Tb = Range("A2:B" & [A65000].End(xlUp).Row)

travaille sur les colonnes A et C sans B ?

Merci à vous

Tb = Range("A2:B" & [A65000].End(xlUp).Row)

Place toutes les valeurs contenues dans les colonnes A et B (dernière ligne en A) dans une variable tableau.

Ainsi Tb(1, 1) = A2, Tb(1, 2) = B2, Tb(3, 2) = B4 etc...

Si tu veux le contenu des colonnes A et C, prends B au passage mais ne t'en sers pas :

Tb = Range("A2:C" & [A65000].End(xlUp).Row)

Donnera :

en Tb(1, 1) la valeur contenue en A2

en Tb(1, 2) la valeur contenue en B2

en Tb(1, 3) la valeur contenue en C2

en Tb(2, 1) la valeur contenue en A3

en Tb(2, 2) la valeur contenue en B3

en Tb(2, 3) la valeur contenue en C3

etc...

dacc, merci

Rechercher des sujets similaires à "addition doublons"