Aleatoiriser un tableau à une dimension

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 070 fois - Téléchargée 30 fois

Contenu du snippet

Cela est donc une fonction pour alétoiriser un tableau à une dimension, elle peut servir dans ne nombreux cas, il y a un exemple d'utilisation plus bas qui montre une possiblité d'usage.

L'exemple necessite le placement d'une listbox, List1.

Source / Exemple :


Dim MatL As Variant 'Declaration pour l'exemple

Private Function Aleatoiriser(Mat As Variant) As Boolean
    
    'Déclarations des variables
    Dim NbrA As Long, IndexR As Long, IndexA As Long, SavMat As Variant
    
    'S'il y a une erreur il termine l'execution de cette fonction
    On Error GoTo F
    
    'Aléatoirise le Rnd
    Randomize Timer
    
    For IndexR = LBound(Mat) To UBound(Mat) 'IndexR varie de sa valeur Minimale à celle Maximale
    
        IndexA = Int(Rnd * UBound(Mat)) 'Donne un indexa compris dans lensemble des index existant
        SavMat = Mat(IndexR) 'Garde l'ancienne valeur du tableau
        Mat(IndexR) = Mat(IndexA) 'Implemente la valeur de l'indexA du tableau à celle de l'indexR
        Mat(IndexA) = SavMat 'Et Vis-Versa
    
    Next 'Boucle

    Aleatoiriser = True
    
F:
    
End Function

''Exemple :
Private Sub ImplementerLst(List As ListBox, MatI As Variant)
    
    List.Clear
    For Var = 0 To UBound(MatI)
        
        List.List(Var) = MatI(Var)
        
    Next
    
End Sub

Private Sub ImplementerMt(MatI As Variant, List As ListBox)
    
    ReDim MatI(List.ListCount - 1) As String
    For Var = 0 To List.ListCount - 1
        
         MatI(Var) = List.List(Var)
        
    Next
    
End Sub

Private Sub Form_Activate()

    Amp = 100
    For N = 0 To Int(Rnd * Amp) + Amp
    
        List1.AddItem "Trankil" & N
    
    Next
    
    ImplementerMt MatL, List1

End Sub

Private Sub form_Click()
    
    Aleatoiriser MatL
    ImplementerLst List1, MatL
    
End Sub

Conclusion :


Pour une fois, je me suis dis que j'allais posté qq chose de simple et utile ;)

A voir également

Ajouter un commentaire Commentaires
Messages postés
70
Date d'inscription
dimanche 11 janvier 2004
Statut
Membre
Dernière intervention
1 octobre 2004

Heureusement que non, car les données sont échangées, ex :

A est la valeur de la case normal
B est la valeur de la case choisit aléatoirement

On voit :

C=A
A=B
B=C

Donc aucune perte de données ;)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
78
Salut gandalfkhorne
A mon avis, tu dois perdre des données puisqu'un nombre aléatoire peut apparaître deux fois !!

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.