Nombre d’occurrence dans un échantillon

Bonjour,

Comme beaucoup je débute dans les macros et j'ai besoin d'aide.

Besoin = A partir d'une liste je dois extraire un échantillon. Le problème c'est que le nombre d’occurrence n'est jamais le même, il peut être de 10 puis une autre fois de 150 par exemple.

En cherchant sur les différents forums, j'ai trouvé le code ci-dessous qui répond presque entièrement à mon besoin :

-----------------------------------------------------------------------------------------

Sub SelectionAleatoire()
Dim d As Object, n%, ref$, plage As Range

Randomize
Set d = CreateObject("Scripting.Dictionary")
While d.Count < 354
n = 2 + Int(999 * Rnd) 'nombre entier aléatoire de 2 à 1000
If Not d.Exists(n) Then
ref = n & ":" & n 'référence texte
Set plage = Union(IIf(d.Count, plage, Range(ref)), Range(ref))
d.Add n, n
End If
Wend

Application.ScreenUpdating = False 'évite un défilement
plage.Select 'pour montrer
Intersect(plage, Range("A:G")).Copy Sheets(2).Range("A2")

End Sub

-----------------------------------------------------------------------------------------

Mon problème est sur le partie "While d.Count < 354"

Par défaut, dans le code le nombre d’occurrence est donc de "354", je voudrais au moment de lancer la macro choisir moi-même cette valeur sans aller le modifier manuellement dans le code à chaque fois.

Pouvez-vous m'aider s'il vous plait ?

Je vous remercie par avance

bonjour,

une proposition

Sub SelectionAleatoire()
    Dim d As Object, n%, ref$, plage As Range, valeur As Long

    Randomize
    Set d = CreateObject("Scripting.Dictionary")
    valeur = InputBox("valeur")
    Do While d.Count < valeur
        n = 2 + Int(999 * Rnd) 'nombre entier aléatoire de 2 à 1000
        If Not d.Exists(n) Then
            ref = n & ":" & n 'référence texte
            Set plage = Union(IIf(d.Count, plage, Range(ref)), Range(ref))
            d.Add n, n
        End If
    Loop

    Application.ScreenUpdating = False 'évite un défilement
    plage.Select 'pour montrer
    Intersect(plage, Range("A:G")).Copy Sheets(2).Range("A2")

End Sub

Merci h2so4, ça fonctionne !

Rechercher des sujets similaires à "nombre occurrence echantillon"