Sub Tableau_2022()
'Ex : l'agent 1 est en vacances du 12 au 17 Février , l'agent 12 est absent tout le mois d'aout
'et l'agent 13 n'est pas encore formé , le 15 lui n'est pas là le 23 Mars ...
'J'aimerais aussi pouvoir interdire provisoirement certaines associations par exemple , je ne veux pas que le 2 soit associé avec le 16 ou le 1 avec le 13 , le 8 et le 5
Dim N, agent%, R As Range, i&, dat As Date, j%, x$, exclu1, exclu2, exclu3, exclu4, exclu5, exclu6, exclu7, exclu8
N = 20 'nombre d'agents, à adapter
agent = 0 'de 0 à N - 1, modifiable chaque année
Set R = [A1].CurrentRegion
Application.ScreenUpdating = False
R.Columns(2).Resize(, 3).ClearContents 'RAZ
For i = 2 To R.Rows.Count
dat = R(i, 1)
For j = 2 To 4
Do
agent = agent + 1
If agent > N Then agent = 1 'rotation
R(i, j) = agent
x = Chr(1) & R(i, 2) & Chr(1) & R(i, 3) & Chr(1) & R(i, 4) & Chr(1) 'numéros encadrés
exclu1 = InStr(x, Chr(1) & 1 & Chr(1)) > 0 And dat >= CDate("12/02/22") And dat <= CDate("17/02/22")
exclu2 = InStr(x, Chr(1) & 12 & Chr(1)) > 0 And dat >= CDate("01/08/22") And dat <= CDate("31/08/22")
exclu3 = InStr(x, Chr(1) & 13 & Chr(1)) > 0
exclu4 = InStr(x, Chr(1) & 15 & Chr(1)) > 0 And dat = CDate("23/03/22")
exclu5 = InStr(x, Chr(1) & 2 & Chr(1)) > 0 And InStr(x, Chr(1) & 16 & Chr(1)) > 0
exclu6 = InStr(x, Chr(1) & 1 & Chr(1)) > 0 And InStr(x, Chr(1) & 13 & Chr(1)) > 0
exclu7 = InStr(x, Chr(1) & 1 & Chr(1)) > 0 And InStr(x, Chr(1) & 8 & Chr(1)) > 0
exclu8 = InStr(x, Chr(1) & 1 & Chr(1)) > 0 And InStr(x, Chr(1) & 5 & Chr(1)) > 0
Loop While exclu1 Or exclu2 Or exclu3 Or exclu4 Or exclu5 Or exclu6 Or exclu7 Or exclu8
Next j, i
End Sub