Bonjour,
ce n'est pas le plus simple des algorithmes !!
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
algorithme que j'ai repris et simplifié ici : https://www.excel-pratique.com/fr/telechargements/utilitaires/tables-berger-excel-no431
Dim ba() As Variant, bs() As Variant, n() As Variant
ReDim ba(1 To p / 2, 1 To 2 * (p - 1))
ReDim bs(1 To p / 2, 1 To 2 * (p - 1))
ReDim n(1 To p - 1)
For i = 1 To p
m = 2 * i - 1
If m >= p Then m = m - p + 1
For j = i + 1 To p
If m = p Then m = 1
If m = i - 1 Then m = 2 * (i - 1)
If m >= p Then m = m - p + 1
n(m) = n(m) + 1
ba(n(m), 2 * m - 1) = t(i, 4): ba(n(m), 2 * m) = t(j, 4)
bs(n(m), 2 * m - 1) = t(i, 1): bs(n(m), 2 * m) = t(j, 1)
m = m + 1
Next
Next
Difficile de répondre à ta question assez générale ... que cherches-tu exactement ?