Bonjour,
1) plutôt que de tirer au hasard un numéro de dia et une position, la macro met une image au hasard (parmi les images non encore utilisées) dans chaque position de chaque dia.
2) algorithme de tirage au sort
on crée une liste avec tous les numéros à tirer
on tire une position au hasard dans cette liste
on prend le numéro trouvé à cette position
on recopie le dernier élément de la liste à cette position
on diminue de 1 le nombre d'éléments dans la liste
3) explications dans les commentaires du code
Sub tirage()
Dim n(512) 'n contient les numéros d'images non encore tirées
Range(Cells(6, 17), Cells(517, 18)).ClearContents ' on efface le contenu des colonnes 17 et 18
For i = 1 To 512 ' on charge les numéros d'images dans n
n(i) = i
Next i
ni = 512 'ni = nombre d'images non encore tirées
For d = 1 To 128 ' on prend chaque dia
For p = 1 To 4 ' on prend chaque position
q = Application.RandBetween(1, ni) ' q= un numéro d'index d'une image disponible tiré au hasard
nq = n(q) ' nq = numéro d'image trouvé à la position q
n(q) = n(ni) ' on recopie le dernier numéro d'image en position q
ni = ni - 1 ' on diminue de 1 le nombre d'images disponibles
Cells(nq + 5, 17) = p ' on indique la position en regard de l'image tirée
Cells(nq + 5, 18) = d ' on indique la dia en regard de l'image tirée
Next p
Next d
End Sub