Changement de méthode : pas de formule, une procédure va constituer les listes par gestionnaire à partir de la Base (sur 2 colonnes : Fournisseurs/Gestionnaires, données commençant ligne 2). Il convient d'adapter si les éléments diffèrent. La proc. doit être lancée la Base étant la feuille active, et une feuille Listes doit exister pour y consigner les résultats.
Sub ListerFournisseursParGestionnaire()
Dim d As Object, k, itm, n&, i&
Set d = CreateObject("Scripting.Dictionary")
With ActiveSheet
n = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 2 To n
k = .Cells(i, 2)
d(k) = d(k) & ";" & .Cells(i, 1)
Next i
End With
With Worksheets("Listes")
.UsedRange.Clear
If d.exists("") Then
itm = Split("Sans gest." & d(""), ";")
.Cells(1, 1).Resize(UBound(itm) + 1).Value = WorksheetFunction.Transpose(itm)
d.Remove (""): n = 1
Else
n = 0
End If
For Each k In d.keys
itm = Split(k & d(k), ";")
n = n + 1
.Cells(1, n).Resize(UBound(itm) + 1).Value = WorksheetFunction.Transpose(itm)
Next k
.Activate
End With
End Sub
La proc. tient compte de fournisseurs sans gestionnaire (cellule gestionnaire vide), elle en fait une liste, s'il y a lieu, intitulée "Sans gest." à la place du nom, et placée en col. A.
Cordialement.