vincent noah
XLDnaute Junior
Bonjour à tous ,
je cherche à modifier un code qui est très long quand il y a beaucoup de cellule à traiter !
* je souhaite que chaque cellule tirée (bleu) ne soit plus prise en compte pour le tirage suivant .... jusqu’à ceux que la cible soit atteinte.
*le code ma était gentillement proposé par job75.
Merci de votre aides
je cherche à modifier un code qui est très long quand il y a beaucoup de cellule à traiter !
* je souhaite que chaque cellule tirée (bleu) ne soit plus prise en compte pour le tirage suivant .... jusqu’à ceux que la cible soit atteinte.
Code:
Sub Tirage()
Dim r As Range, cible, ncoul As Range, nc&, d As Object, c As Range
Set r = [A1:B20000] 'plage à adapter
cible = [D2] 'à adapter
Set ncoul = [E2] 'à adapter
r.Interior.ColorIndex = xlNone 'RAZ
ncoul = ""
If Application.CountIf(r, cible) = 0 Then _
MsgBox "Valeur cible introuvable !", 48: Exit Sub
Application.ScreenUpdating = False
Randomize
nc = r.Count
Set d = CreateObject("Scripting.Dictionary")
Do
Set c = r(Int(1 + Rnd * nc))
If c <> "" And Not d.exists(c.Value) Then
d(c.Value) = ""
c.Interior.ColorIndex = 47 'bleu
End If
Loop While c <> cible
c.Interior.ColorIndex = 3 'rouge
ncoul = d.Count
End Sub
*le code ma était gentillement proposé par job75.
Merci de votre aides