[COLOR="DarkSlateGray"][B]Option Explicit
Private Sub Tirage_Click()
test
End Sub
Sub test()
Dim p As Range, oCel As Range, oNom As Range, oDat(), nDat&, qDat(), pDat&, i&
On Error GoTo E
Set p = Range("Feuille")
On Error GoTo 0
With Sheets("Exclus")
If Not IsEmpty(.[A2]) Then
With .[A2].Resize(.[A1].End(xlDown).Row - 1, 1)
For Each oNom In .Cells
pDat = pDat + 1
ReDim Preserve qDat(1 To pDat)
qDat(pDat) = oNom.Value
Next oNom
End With
End If
End With
For Each oCel In p.Cells
On Error GoTo E1
With Sheets(oCel.Value)
If Not IsEmpty(.[A2]) Then
With .[A2].Resize(.[A1].End(xlDown).Row - 1, 1)
For Each oNom In .Cells
If oNom.Offset(0, 1).Value <> "" Then
If pDat Then
For i = 1 To pDat
If oCel.Value & "/" & oNom.Value = qDat(i) Then Exit For
Next i
End If
If i > pDat Or pDat = 0 Then
nDat = nDat + 1
ReDim Preserve oDat(1 To 3, 1 To nDat)
oDat(1, nDat) = oCel.Value
oDat(2, nDat) = oNom.Value
oDat(3, nDat) = oCel.Value & "/" & oNom.Value
End If
End If
Next oNom
End With
End If
End With
S1: On Error GoTo 0
Next oCel
Randomize
If nDat Then
Sheets("Exclus").Cells(pDat + 2, 1).Value = oDat(3, 1 + Int(nDat * Rnd()))
MsgBox oDat(2, 1 + Int(nDat * Rnd(0))) & " (" & oDat(1, 1 + Int(nDat * Rnd(0))) & ")"
End If
Exit Sub
E1: Resume S1
E:
End Sub[/B][/COLOR]