Tu es toujours plus rapide ... je viens de sortir ma version à partir d'une macro sur laquelle j'avais commencé à travailler il y a fort longtemps (merci à son auteur).
Les rencontres se lisent en horizontal (et non vertical).
Sub test()
TNom = [T].Value
TBerger = BERGER(UBound(TNom), UBound(TNom))
For i = 1 To UBound(TBerger, 1)
For j = 1 To UBound(TBerger, 2)
TBerger(i, j) = TNom(TBerger(i, j), 4)
Next
Next
With Worksheets("resultat")
.Range("A1").CurrentRegion.Offset(1, 0).ClearContents
.Range("A2").Resize(UBound(TBerger, 1), UBound(TBerger, 2)) = TBerger
.Select
End With
End Sub
Function BERGER(p%, q%)
' auteur inconnu
Dim i%, j%, k%, r%
ReDim m(1 To p + p Mod 2 - 1, p + p Mod 2)
ReDim u%(p + p Mod 2)
If p > 1 And p >= q And q > 0 Then
r = 2 * ((q + 1) \ 2)
For i = 1 To q
If i < r Then m(i, 0) = i
For j = 1 To q
k = (((1 - ((i = r) Or (j = r))) * (i + j - 2)) Mod (r - 1) + 1) * ((i + j - (i > j)) Mod 2)
If k Then
u(k) = u(k) + 2
m(k, u(k) - 1) = i
m(k, u(k)) = j
End If
Next j
Next i
End If
BERGER = m
End Function
nota : l'intérêt de l'aléa in fine est faible sis le nombre de rencontres est suffisant pour que tout le monde voit tout le monde !