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
- Image de plage pix ✓ - Forum Google Chrome
- Verrouiller cellules excel - Guide
- Image de manchots sur une image de plage - Forum Musique / Radio / Clip
- Faites afficher avec un fond coloré les cellules qui contiennent une valeur comprise entre 250 et 350. quel nombre est dessiné en surbrillance ? ✓ - 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