Microsoft 365 vba tirage au sort

skali-amine

XLDnaute Nouveau
Bonjour,


je veux créer un code VBA qui permet de tirer aléatoirement les employés qui travaillent le samedi mais je veux prendre seulement 7 personnes
dans le tableau des employés , il y a aussi des personnes qui ne travaillent pas le samedi
le nombre des employés est 45.
mon besoin pour les samedi est 7.
 

Pièces jointes

  • samedi.xlsx
    9.3 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour skali-amine,
Un essai en PJ en considérant que W signifiait que l'employé acceptait de travailler le samedi.
Ca marche quel que soit le nombre d'employés.
VB:
Sub Tirage()
    Dim T, S, i%, j%, C%, N%
    DL = Range("C65500").End(xlUp).Row
    Range("J4:M" & DL).ClearContents
    Application.ScreenUpdating = False
    T = Range("C4:H" & DL): ReDim S(UBound(T), 2)
    For C = 1 To 4
        For i = 1 To UBound(S)
            Randomize
            S(i, 1) = i: S(i, 2) = 100 * Rnd()
        Next i
        For i = 1 To UBound(S)
            For j = 1 To UBound(S)
                If S(j, 2) < S(i, 2) Then
                    buffer = S(j, 1): S(j, 1) = S(i, 1): S(i, 1) = buffer
                    buffer = S(j, 2): S(j, 2) = S(i, 2): S(i, 2) = buffer
                End If
            Next j
        Next i
        N = 0
        For i = 1 To UBound(T)
            If T(S(i, 1), C + 2) = "W" Then
                Cells(S(i, 1) + 3, C + 9) = "X"
                N = N + 1
                If N = 7 Then Exit For
            End If
        Next i
    Next C
End Sub
 

Pièces jointes

  • samedi.xlsm
    18.8 KB · Affichages: 12

Discussions similaires

Statistiques des forums

Discussions
312 466
Messages
2 088 675
Membres
103 917
dernier inscrit
skullym