Tirage aléatoire [Résolu]

Messages postés
3
Date d'inscription
lundi 23 janvier 2006
Dernière intervention
27 février 2011
- - Dernière réponse : us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
- 1 mars 2011 à 18:25
Bonjour à tous. J'ai adhéré à VB pour les très nuls et je vous remercie d'avance de votre compréhension.
Voilà : j'ai un fichier Excel avec une colonne comportant 65 chiffres de 1 à 65. Je voudrais extraire de façon aléatoire 1 (et 1 seul) chiffre de cette liste et le copier dans une autre feuille. Puis extraire un autre chiffre (différent du premier) et le copier dans cette autre feuille puis un 3ème et dernier chiffre. Merci de m'indiquer un petit code pour réaliser cette manipulation (insurmontable pour moi).
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Dernière intervention
3 juin 2016
7
3
Merci
Indice : remplis un tableau de 65 éléments, ordonné (1, 2, 3, ... 64, 65), et une fois qu'il est rempli tu échanges chaque élément du tableau avec un autre élément tiré au hasard entre 1 et 65. Ensuite, tu utilises les éléments mélangés du tableau un par un.

Ca te permettra d'obtenir un tirage aléatoire, sans doublons.

Cordialement, Bacterius !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Bacterius
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
4
0
Merci
Bonjour,

Sub es()

Dim nb(65) As Boolean

Do

nbalea = Int(Rnd * 65 + 1)

If nb(nbalea) = False Then
    nb(nbalea) = True
    tire = tire + 1
    Debug.Print tire & " > " & nbalea
End If

Loop Until tire > 64

End Sub


A la place de Debug.print utilise une référence à une cellule incrémentée.

C'est moins élégant que l'idée de Bacterius, mais aussi efficace pour un nombre raisonnable...

Amicalement,
Us.
Commenter la réponse de us_30

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.