Parcourir une plage de cellules de manière aléatoire
Résolu/Fermé
luclucdu38
Messages postés
49
Date d'inscription
mercredi 20 novembre 2013
Statut
Membre
Dernière intervention
23 avril 2016
-
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
- Frédéric cherche à faire le buzz sur les réseaux sociaux. il a ajouté une image de manchots sur une image de plage. retrouvez l'image originale de la plage. que cachent les manchots ? ✓ - Forum Windows
- Excel concatener une plage de cellules ✓ - Forum Excel
- Impossible de fusionner des cellules excel ✓ - Forum Excel
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Verrouiller cellules excel - Guide
2 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 762
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
luclucdu38
Messages postés
49
Date d'inscription
mercredi 20 novembre 2013
Statut
Membre
Dernière intervention
23 avril 2016
4
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 762
23 avril 2016 à 20:40
23 avril 2016 à 20:40
Si c'est terminé, passe le post en résolu