ne pas tirer les même agents par colonne

mgrizzly

XLDnaute Junior
faire un tirage sans remise

Bonjour,
Je fais un planning de gestion des agents.
Mon programme prend de la feuille "compétences", les agents dont la cellule n'est pas rouge et dont la cellule comprend des 1.
Il les met ensuite dans un planning de la feuille "mois en cours", mais pas dans les cellules jaunes.
Tout marche bien jusque là mais les noms des agents se répètent d'une colonne à l'autre.
Je voudrais qu'un nom ne se mette que dans une cellule d'une ligne car en ligne se trouve les jours et en colonne leurs activités.
Un agent ne peut faire qu'une activité par jour.Il faudrait donc je suppose modifier mon code en tirage sans remise.
Merci de m'aider.


Voilà mon code:
Code:
Sub Nom_FIP_2(w() As String)

Dim v As Byte, c As New Collection, x As Integer, y() As Variant, z() As Variant, i As Byte

Randomize
y = Array(16, 17, 18)
z = Array(9, 25, 42)
For i = 0 To 2
    Do While c.Count < 4
        cpt% = cpt% + 1
        If cpt% > MAX_ITER Then
          cpt% = 0
          Exit Do
        End If
        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
 
End Sub
Sub FIP_AIP_MUSC_2()

Dim p As Range, v As Byte, w(12) As String
 
Nom_FIP_2 w
 
For Each p In Sheets("Mois en cours").Range("F4:F18")
    If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
       p.Value = w(0)
       For v = 1 To UBound(w)
           p.Value = p.Value & "/" & w(v)
       Next v
    End If
Next p
 
Nom_FIP_2 w
 
For Each p In Sheets("Mois en cours").Range("F19:F34")
    If p.Interior.ColorIndex <> 6 And IsEmpty(p.Value) Then
       p.Value = w(0)
       For v = 1 To UBound(w)
           p.Value = p.Value & "/" & w(v)
       Next v
    End If
Next p
 
End Sub
 
Dernière édition:

mgrizzly

XLDnaute Junior
Re : ne pas tirer les même agents par colonne

On m'a dit d'essyé avec ça:
Code:
on réalise ntirage (ntirage<=8)
Redim donnée(1 to 8)
redim résultats (1 to ntirage)
'on stocke les valeur dans donnée
 
for i =1 to ntirage
   'on choisit aléatoirement qu'elle valeur du vecteur donnée sera tiré
   n=Int((ubound(donnée)- 1+ 1) * Rnd + 1)
   'on récupoère le ième résultat
   résultats(i)= donnée(n)
   'on copie les donnée qui n'ont pas été tiré dans le tableau temporaire
   redim temporaire(ubound(donée-1)
   for j = 1 to n
      temporaire(j)=donnée(j)
   next j
   for j = n to ubound(donnée)
      temporaire(j-1)=donnée(j)
   next j
   'temporaire contient toutes les donnée qui n'ont pas encore été tiré
   redim donnée(ubound(temporaire))
   'tu copie les valeur de temporaire dans donnée
    donnée=temporaire 'ca ne devrais pas fonctionner met le bon code
next i
 (avec des chaine de pointeur c'est

mais j'arrive pas à le réadapter dans mon code.
Quelqu'un peut m'aider?
 

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch