Parcourir une plage de cellules de manière aléatoire
Résolu/Fermé
Utilisateur anonyme
-
Modifié par luclucdu38 le 22/04/2016 à 22:58
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 avril 2016 à 20:40
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 23 avril 2016 à 20:40
A voir également:
- Parcourir une plage de cellules de manière aléatoire
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image d’ours polaire sur une image de plage. retrouvez l'image originale de la plage. que cache l'ours polaire ? - Forum Loisirs / Divertissements
- Visualiser une image présente dans le cache ✓ - Forum Google Chrome
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
22 avril 2016 à 23:47
22 avril 2016 à 23:47
Bonjour,
Exemple :
Exemple :
Option Explicit ' ' Etablir une référence à Microsoft Scripting Runtime ' (Outils / Références ...) ' Sub Test() Const adrAléa As String = "B2" '1° cellule recevant les N° aléatoires Const nbreN° As Integer = 10 'Nombre de N° aléatoires Dim dicOrdre As Dictionary 'Ordre aléatoire des N° Set dicOrdre = New Dictionary Call OrdreAléatoire(nbreN°, dicOrdre) Feuil1.Range(adrAléa).Resize(dicOrdre.Count, 1) = _ Application.Transpose(dicOrdre.Keys) End Sub Private Sub OrdreAléatoire(Quantité As Integer, dicOrdre As Dictionary) ' Renvoi un dictionnaire contenant les numéros de 1 à Quantité ' dans un ordre aléatoire ' Dim ctr As Integer Dim aléa As Integer Randomize dicOrdre.RemoveAll For ctr = 1 To Quantité aléa = Int(Rnd * Quantité) + 1 If Not dicOrdre.Exists(aléa) Then 'si le numèro n'as pas déja été tiré, l'ajouter dicOrdre.Add aléa, ctr - 1 Else 'sinon réitérer le tirage ctr = ctr - 1 End If Next End Sub
Utilisateur anonyme
Modifié par luclucdu38 le 23/04/2016 à 18:56
Modifié par luclucdu38 le 23/04/2016 à 18:56
Salut à toi,
j'ai trouvé ce code qui m'a grandement aidé.
Le voici :
j'ai trouvé ce code qui m'a grandement aidé.
Le voici :
derlig = Range("A" & Rows.Count).End(xlUp).Row
ReDim tabl(1 To derlig, 1 To 2)
For i = 1 To derlig
tabl(i, 1) = i
Next
Range("B1:B" & derlig).Value = tabl
nb = UBound(tabl) + 1
For i = 1 To nb \ 2
ou = Int(((nb - i) * Rnd)) + 1
temp = tabl(ou, 1)
tabl(ou, 1) = tabl(nb - i, 1)
tabl(nb - i, 1) = temp
Next
Range("B1:B" & derlig).Value = tabl
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
23 avril 2016 à 20:40
23 avril 2016 à 20:40
Si c'est terminé, passe le post en résolu