Bonjour,
Je fais un planning pour gérer les agents. J'ai une feuille "mois en cours" avec un calandrier où les weekend et jours fériés sont mis en jaune et une autre feuille "compétences", où on trouve un tableau des agents et de leurs compétences:
colonne 1: id des agents
colonne 2: nom des agents
colonne 3 juqu'à colonne 9: compétences des agents marqués avec des 1 et des 0 pour sachant faire et ne sachant pas faire.
J'ai un code qui prend aléatoirement 3 agents de la ligne 9 à 24, 3 agents de la ligne 25 à 42 et 3 agents de la ligne 43 à 59, sauf les cellules colorés en rouge (agent en congés).
Je voudrais que le code puisse prendre ces 9 agents et les mettre dans chaque cellules blanches de la feuille "mois en cours" de la cellule F4 à F34.
Sauf que mon code rempli bien les cellules de F4 à F34 mais ne met qu'1 nom d'agent au lieu des 9 dans une cellule.
Merci de m'aider. J'espère avoir été clair!
Voici mon code :
Sub FIP_AIP_MUSC_3()
Dim i As Byte, y() As Variant, z() As Variant, x As Integer, c As New Collection
Dim p As Range, v As Byte, w(8) As String
Randomize
y = Array(16, 17, 18)
z = Array(9, 25, 42)
For i = 0 To 2
Do While c.Count < 3
x = Int(y(i) * Rnd + z(i))
If Cells(x, 3) = 1 And Cells(x, 3).Interior.ColorIndex <> 3 Then
On Error Resume Next
c.Add Cells(x, 3).Address, CStr(Cells(x, 3).Address)
If Err = 0 Then
On Error GoTo 0
w(v) = Cells(x, 2).Value
v = v + 1
End If
On Error GoTo 0
End If
Loop
Set c = Nothing
Next i
v = 0
For Each p In Sheets("Mois en cours").Range("F4:F34")
If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
p.Value = w(v)
v = IIf(v = 8, 0, v + 1)
End If
Next p
End Sub