Parcourir une plage de cellules de manière aléatoire
Résolu
Utilisateur anonyme
-
Patrice33740 Messages postés 8930 Statut Membre -
Patrice33740 Messages postés 8930 Statut Membre -
Bonjour,
j'ai un petit problème en VBA que je n'arrive pas a solutionner.
Pour chaque cellule je voudrai écrire sur sa voisine de droite (plage de cellules allants de B1 à B10) l'ordre dans lequel mon programme à parcouru la plage de cellule.
Or je ne sais trop comment faire. Je sais qu'il y a la fonction Random qui existe mais c'est tout.
Mélanger cette liste
Parcourir cette liste dans l'ordre
2) Comment mélanger une liste ?
===============
Je débute en VBA, pourriez-vous m'aider s'il vous plait ?
Merci beaucoup
j'ai un petit problème en VBA que je n'arrive pas a solutionner.
Problème
J'ai une plage de cellules allants de A1 à A10.Pour chaque cellule je voudrai écrire sur sa voisine de droite (plage de cellules allants de B1 à B10) l'ordre dans lequel mon programme à parcouru la plage de cellule.
Or je ne sais trop comment faire. Je sais qu'il y a la fonction Random qui existe mais c'est tout.
Idée 1
Initialiser une liste {1,2,3,4,5,6,7,8,9,10}Mélanger cette liste
Parcourir cette liste dans l'ordre
Questions
1) Comment parcourir une plage de cellules aléatoirement ?2) Comment mélanger une liste ?
===============
Je débute en VBA, pourriez-vous m'aider s'il vous plait ?
Merci beaucoup
A voir également:
- Parcourir une plage de cellules de manière aléatoire
- Somme de plusieurs cellules excel - Guide
- Excel concatener une plage de cellules ✓ - Forum Excel
- Verrouiller cellules excel - Guide
- Image de plage pix ✓ - Forum Google Chrome
- Tirage au sort excel aléatoire sans doublon ✓ - Forum Excel
2 réponses
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
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