Bonjour,
On va faire au plus confortable pour l'utilisation... soit avec une fonction personnalisée matricielle :
Function REORGTBL(tbl As Range)
Dim T(), i%, j%, k, d As Object
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
With tbl
For i = 1 To .Rows.Count
d(.Cells(i, 1).Value) = ""
Next i
ReDim T(1 To .Rows.Count, 1 To 2)
For Each k In d.keys
j = j + 1: T(j, 1) = k
For i = 1 To .Rows.Count
If .Cells(i, 1) = k Then T(j, 2) = T(j, 2) & "/ " & .Cells(i, 2)
Next i
T(j, 2) = Replace(T(j, 2), "/ ", Chr(160), 1, 1)
Next k
For i = j + 1 To .Rows.Count
T(i, 1) = "": T(i, 2) = ""
Next i
End With
REORGTBL = T
End Function
Une fonction personnalisée est une macro sous forme de procédure Function, qui donc renvoie un résultat, conçue pour fonctionner sur feuille de calcul à l'instar de toutes les fonctions Excel.
S'agissant d'un fonction destinée à réorganiser un tableau, elle s'utilise de la façon suivante :
- On sélectionne d'abord une plage de cellule de taille égale au tableau à réorganiser (par exemple la plage B15:C23).
- On tape la formule : =REORGTBL(B5:C13)
- en argument de la fonction figure la plage constituant le tableau à réorganiser.
- On valide par la combinaison de touches Ctrl+Maj+Entrée.
- Le résultat (nouveau tableau) apparaît dans la plage initialement sélectionnée.
Cordialement.