'LoadAssignationRep & AssignationAuto
Dim AgentNameNumber(0 To 99, 0 To 1) As Variant
Dim FirstCelluleAgentNumber As Variant
Dim NextCelluleAgentNumber As Variant
Dim GigaSelection As Range
Dim y As Integer
Dim z As Integer
Dim PlusPetitQue As Long
Dim NomAgent As String
Dim T()
Dim Compteur
Sub LoadAssignationRep()
ComboBoxRepresentant.Clear
Set MegaSelection = Range(Feuil6.Cells(1, 2), Feuil6.Cells(9999, 2))
Set GigaSelection = Range(Feuil17.Cells(1, 1), Feuil17.Cells(9999, 1))
LastRowAgent = MegaSelection.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set FirstCelluleAgent = MegaSelection.Find("3", After:=Feuil6.Cells(1, 2), SearchOrder:=xlByRows, SearchDirection:=xlNext)
ComboBoxRepresentant.AddItem FirstCelluleAgent.Offset(0, -1)
Set FirstCelluleAgentNumber = GigaSelection.Find(FirstCelluleAgent.Offset(0, -1), After:=Feuil17.Cells(1, 1), SearchOrder:=xlByRows, SearchDirection:=xlNext)
AgentNameNumber(0, 0) = FirstCelluleAgent.Offset(0, -1)
AgentNameNumber(0, 1) = FirstCelluleAgentNumber.Offset(0, 9)
NextCelluleAgentRow = MegaSelection.Find("3", After:=Feuil6.Cells(1, 2), SearchOrder:=xlByRows, SearchDirection:=xlNext).Row
y = 1
NextCelluleAgentRow = FirstCelluleAgent.Row
Do Until NextCelluleAgentRow = LastRowAgent
Set NextCelluleAgent = MegaSelection.Find("3", After:=Feuil6.Cells(NextCelluleAgentRow, 2), SearchOrder:=xlByRows, SearchDirection:=xlNext)
NextCelluleAgentRow = NextCelluleAgent.Row
ComboBoxRepresentant.AddItem NextCelluleAgent.Offset(0, -1)
Set NextCelluleAgentNumber = GigaSelection.Find(NextCelluleAgent.Offset(0, -1), After:=Feuil17.Cells(1, 1), SearchOrder:=xlByRows, SearchDirection:=xlNext)
AgentNameNumber(y, 0) = NextCelluleAgent.Offset(0, -1)
AgentNameNumber(y, 1) = NextCelluleAgentNumber.Offset(0, 9)
y = y + 1
Loop
AssignationAuto
End Sub
Sub AssignationAuto()
'=== Trouve le représentant qui a le moins de dossier ============================
PlusPetitQue = 9999 'un grand nombre fixé de manière arbitraire
Compteur = 0
'--- Détermine le plus petit ---
For z = LBound(AgentNameNumber, 1) To y - 1 'UBound(AgentNameNumber, 1)
If AgentNameNumber(z, 1) < PlusPetitQue Then
PlusPetitQue = AgentNameNumber(z, 1)
NomAgent = AgentNameNumber(z, 0)
End If
Next z
Label1:
'--- Mets le(s) plus petit(s) dans un tableau ---
For z = LBound(AgentNameNumber, 1) To y - 1 'UBound(AgentNameNumber, 1)
If AgentNameNumber(z, 1) = PlusPetitQue Then
Compteur = Compteur + 1
ReDim Preserve T(1 To Compteur)
T(Compteur) = AgentNameNumber(z, 0)
'--- Indique aléatoirement un représentant ---
Randomize Timer
ComboBoxRepresentant = T(Int(Compteur * Rnd) + 1)
End If
Next z
End Sub