Bonjour,

N'étant pas un expert dans le domaine VB et ayant besoin urgemment d'aide, je me suis dit qu'il ne me restait plus qu'à espérer l'aide d'Internaute !

J'ai un document excel qui fait appel à une macro. Cette macro a différents buts, mais elle doit notamment me permettre de:
1) Créer un tableau de x entiers (x étant par exemple 60) dans l'ordre croissant
2) Reprendre toutes valeurs de ce tableau et me créer un 2ème tableau, mais avec un ordre différent et complètement aléatoire.
3) S'assurer qu'aucune position dans le 1er tableau ne contienne le même entier que dans la même position dans le 2ème tableau.

Voici un extrait du code où je rencontre des problèmes:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
   For ID = 1 To Nbre_Tapis
        Tableau1(ID) = ID
        Tableau2(ID) = ID
        Tableau3(ID) = ID
        Tableau4(ID) = ID
    Next
 
    v0 = UBound(Tableau2) - LBound(Tableau2)
    For ID = LBound(Tableau2) To UBound(Tableau2)
        v1 = Int(Rnd() * v0 + LBound(Tableau2))
        v2 = Int(Rnd() * v0 + LBound(Tableau2))
        v3 = Tableau2(v2)
        Tableau2(v2) = Tableau2(v1)
        Tableau2(v1) = v3
    Next
    For ID = 1 To Nbre_Tapis
        Set Onglet = Worksheets("Test")
        Onglet.Cells(ID, 1) = Tableau1(ID)
        Onglet.Cells(ID, 2) = Tableau2(ID)
    Next
A la fin je récupère le contenu des 2 tableaux pour les écrire dans mon document Excel et pour valider que ça fonctionne comme attendu. Le contenu de mon premier tableau est parfait (forcément, ça n'est pas bien compliqué), mais le contenu de mon 2ème tableau (tri aléatoire du premier) n'a pas du tout l'effet attendu. Vous verrez ci-dessous que le 2ème tableau me retourner passablement de valeurs nulles ... et je n'ai aucune idée pourquoi !

1
2
3
4
5 21
6
7
8
9
10 28
11 11
12
13
14
15
16
17
18
19 30
20 20
21
22 22
23
24 24
25
26 26
27
28
29
30 23

Sauriez-vous ce qui est faux dans mon code ? Il faudrait à tout prix que je puisse avoir ces 30 valeurs, chacune une seule fois, mais dans un ordre complétement différent.

Quand j'aurai résolu ce problème, je m'attaquerai alors à garantir qu'aucune position dans le 1er tableau ne contienne le même entier que dans la même position dans le 2ème tableau.

Je remercie d'orest déjà tous ceux qui pourrait m'aider et me dire ce que j'ai de faux dans mon bout de code ... le temps presse, du coup je bûche en parallèle pour trouver par moi-même le problème !

Merci d'avance

Fabien

J'oubliais ...

J'ai repris un exemple trouvé sur le net, et j'avoue ne pas comprendre certaines étapes.

Fabien