bonjour,
Sub alea()
With Sheets("feuil2")
arr1 = .Range("A1:N20").Value 'plage1
arr2 = .Range("A21:N28").Value 'plage2
End With
With CreateObject("scripting.dictionary")
For I = 1 To UBound(arr1)
For J = 1 To UBound(arr1, 2)
If arr1(I, J) <> "" Then .Add .Count, Join(Array("", "V=" & arr1(I, J), "L=" & Format(I, "00"), "C=" & Format(J, "00")), "|") 'toutes les cellules non-vides dans le dictionary avec ligne et colonne
Next
Next
fl = .items 'liste avec toutes ces cellules
End With
Set c = Sheets("Feuil1").Range("B1:B8") 'plage3
c.ClearContents 'effacer
arr = c.Resize(, 2).Value
For I = 1 To UBound(arr) 'boucle
fl1 = Filter(fl, "|V=" & arr(I, 2) & "|", 1, 1) 'filtre ce valeur
If UBound(fl1) > -1 Then 'il y a des cellules avec ce valeur
COL = Right(Split(fl1(WorksheetFunction.RandBetween(0, UBound(fl1))), "|")(3), 2) 'colonne aleatoire
arr(I, 1) = arr2(WorksheetFunction.RandBetween(1, UBound(arr2)), COL) 'ligne aleatoire
End If
Next
c.Value = arr
End Sub