Aide pour formule Excel

Bonjour la communauté Excel,

Je sollicite votre aide pour un souci excel... J'ai un tableau sur lequel je rentre des offres faites par mon équipe commerciale.

En fin de mois, j'aimerais connaître le top 3 de mon équipe par rapport au CA généré. Existe-t-il une formule simple ? Sachant que si c'est le même commercial en colonne B et D, les honoraires sont à 100% et si c'est 2 commerciaux différents, ils se répartissent les honoraires... Et dans mon exemple, je voudrais la possibilité de ne pas compter certains commerciaux (le conseiller E dans mon fichier). J'ai beau essayé de trouver une idée, je n'y parviens pas...

Je vous ai mis un fichier pour tenter d'être plus clair...

Merci d'avance pour votre aide !

14classeur1.xlsx (15.45 Ko)

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

5classeur1-v1.xlsm (36.95 Ko)
Option Explicit

Dim tablo, dico As Object, tabloR(), k, it, v
Dim i&, j&, n&, c&, d&, t&

Sub TopTrois()

    tablo = Range("A4").CurrentRegion
    Set dico = CreateObject("Scripting.Dictionary")

    For i = 2 To UBound(tablo, 1)
        If tablo(i, 2) = tablo(i, 4) Then
            dico(tablo(i, 2)) = (dico(tablo(i, 2)) + tablo(i, 12))
        Else
            dico(tablo(i, 2)) = dico(tablo(i, 2)) + tablo(i, 12) / 2
            dico(tablo(i, 4)) = dico(tablo(i, 4)) + tablo(i, 12) / 2
        End If
    Next i
    k = dico.keys
    it = dico.items

    d = 0
    For n = 0 To dico.Count - 1
        For c = 47 To Application.Max(47, Range("E" & Rows.Count).End(xlUp).Row)
            If Range("E" & c) = k(n) Then
                GoTo suite
            End If
        Next c
        ReDim Preserve tabloR(1 To 2, 1 To d + 1)
        tabloR(1, 1 + d) = k(n)
        tabloR(2, 1 + d) = it(n)
        d = d + 1
suite:
    Next n

    'on classe le tabloR
    tabloR = Application.Transpose(tabloR)
    For i = 1 To UBound(tabloR, 1)
        For j = 1 To UBound(tabloR, 1)
            If tabloR(i, 2) * 1 > tabloR(j, 2) Then ' 1 pour tri selon la 1ère colonne
                For t = 1 To UBound(tabloR, 2)
                    v = tabloR(i, t)
                    tabloR(i, t) = tabloR(j, t)
                    tabloR(j, t) = v
                Next t
            End If
        Next j
    Next i
    Range("F47:G49").ClearContents

    Range("F47").Resize(3, 2) = tabloR
    Range("G47").Resize(3, 1).TextToColumns Destination:=Range("G47"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), TrailingMinusNumbers:=True

    Erase tabloR
End Sub

Bye !

Alors niveau macro, je suis totalement zéro... Je pense que ça devrait marcher mais quand je veux changer quelque chose, ça indique une erreur d'exécution 429 : un composant ActiveX ne peut pas créer d'objet... Et quand je clique sur déboguer, ça devient du chinois ou du latin lol...

Rechercher des sujets similaires à "aide formule"