Ordre de passage, automatisé

Bonjour,

Je dois organiser un concours pour lequel j'attends à peu près 200 candidats.

Chaque candidat va me donner ses indisponibilités sur une semaine complète ou 2 en fonction de l'affluence.

Une fois ma base de donnée remplie avec les indisponibilités, je voudrais une macro capable d'établir un ordre de passage par jour en tenant compte des indisponibilités.

Pouvez vous m'aider

Merci

Tristan

21classeur2.xlsx (8.84 Ko)

Salut Tristan,

Premier jet, sur ma première idée, sans trop de fioritures.
- tu inscris en [B1] le nombre de candidats à placer par jour (ou tu acceptes le nombre calculé par une macro déclenché lors de l'ajout d'un candidat à ta liste ;
- tu double-cliques sur [B1] pour le calcul de placement avec résultats en feuille 'RDV' ;
- les "X" s'inscrivent ou s'effacent au clic

Public Sub RDV()
'
Dim tTab, tBDD
'
Application.ScreenUpdating = False
'
iRow = Range("A" & Rows.Count).End(xlUp).Row
iCol = Cells(2, Columns.Count).End(xlToLeft).Column
tTab = Range("A3").Resize(iRow - 2, iCol + 1).Value
'
For x = 3 To iRow
    For y = 3 To iCol
        If IsDate(Cells(2, y)) Then Cells(x, y) = IIf(Cells(x, y) = "", "X", "")
    Next
    Cells(x, iCol + 1) = WorksheetFunction.CountIf(Range(fctCol(3) & x & ":" & fctCol(iCol) & x), "X")
Next
With Worksheets("RDV")
    .Cells.Delete
    Range("A2").Resize(1, iCol).Copy Destination:=.[A2]
    For x = 3 To iCol
        iNb = 0
        If Cells(2, x) <> "" Then
            Range("A3:" & fctCol(iCol + 1) & iRow).Sort key1:=Range(fctCol(iCol + 1) & 3), order1:=xlAscending, Orientation:=xlTopToBottom, Header:=xlNo
            For y = 3 To iRow
                If Cells(y, 1) <> "" And Cells(y, x) <> "" Then _
                    iNb = iNb + 1: _
                    .Cells(2 + iNb, x) = Cells(y, 1): _
                    Cells(y, 1) = "": _
                    Cells(y, iCol + 1) = Cells(y, iCol + 1) - 1: _
                    If iNb = [B1] Then Exit For
            Next
        End If
    Next
    .Activate
End With
Range("A3").Resize(iRow - 2, iCol + 1).Value = tTab
'
Application.ScreenUpdating = True
'
End Sub
12tristan.xlsm (21.66 Ko)


A+

Salut Tristan,

version corrigée de ses défauts de jeunesse.
- le calcul du nombre de placements par jour est maintenant correct ;
- un tri Key2 est ajouté, histoire de forcer le placement d'un candidat, même si le nombre max de placements est déjà atteint, si d'aventure, ce(s) dernier(s) candidat(s) n'avai(en)t pas d'autre possibilité.


A+

12tristan-v2.xlsm (26.92 Ko)
Rechercher des sujets similaires à "ordre passage automatise"