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 !
Bonjour et bienvenue sur le forum
Un essai à tester. Te convient-il ?
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 SubBye !
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...