Bonjour !!!!
Suite à l'édition d'un array pour alleger le code, j'ai une erreur d'indice en dehors de plage.
Le code de base pour lequel ca marche est celui-ci :
La fonction traitant cet array est une boucle éxecutant ligne par ligne l'array tant que le resultat n'est pas satisfaisant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim ProcedureFinie as Variant ProcedureFinie = Array(0, "ANNULER", 1, "ANNULER", 1, "VOILIER", 1, "MER", 1, "VALIDER", 1, _ "VOILIER", 1, "MER", 2, "VALIDER", 1, _ "VOILIER", 1, "MER", 4, "VALIDER", 1, _ "CATAMARAN", 1, "MER", 1, "VOILIER", 1, "MER", 3, "VALIDER", 1, _ "CATAMARAN", 1, "MER", 3, "VOILIER", 1, "MER", 1, "VALIDER", 1, _ "BARQUE", 1, "MER", 1, "CATAMARAN", 1, "MER", 1, "VOILIER", 1, "MER", 2, "VALIDER", 1, _ "BARQUE", 1, "MER", 2, "CATAMARAN", 1, "MER", 2, "VOILIER", 1, "MER", 4, "VALIDER", 1, _ "BARQUE", 1, "MER", 5, "VOILIER", 1, "MER", 3, "VALIDER", 1, _ "FREGATE", 1, "MER", 2, "BARQUE", 1, "MER", 2, "VOILIER", 1, "MER", 6, "VALIDER", 1, _ "FREGATE", 1, "MER", 5, "CATAMARAN", 1, "MER", 2, "VOILIER", 1, "MER", 2, "VALIDER", 1, _ "FREGATE", 1, "MER", 10, "VALIDER", 1)
Pour alléger le code voici comment j'ai procédé :
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
21
22 Dim ProcedureFinie As Variant Dim Procedure1 As String, Procedure2 As String Ligne1 = "0, 'ANNULER', 1, 'ANNULER', 1, 'VOILIER', 1, 'MER', 1, 'VALIDER', 1, _" Ligne2 = "'VOILIER', 1, 'MER', 2, 'VALIDER', 1, _" Ligne3 = "'VOILIER', 1, 'MER', 4, 'VALIDER', 1, _" Ligne4 = "'CATAMARAN', 1, 'MER', 1, 'VOILIER', 1, 'MER', 3, 'VALIDER', 1, _" Ligne5 = "'CATAMARAN', 1, 'MER', 3, 'VOILIER', 1, 'MER', 1, 'VALIDER', 1, _" Ligne6 = "'BARQUE', 1, 'MER', 1, 'CATAMARAN', 1, 'MER', 1, 'VOILIER', 1, 'MER', 2, 'VALIDER', 1, _" Ligne7 = "'BARQUE', 1, 'MER', 2, 'CATAMARAN', 1, 'MER', 2, 'VOILIER', 1, 'MER', 4, 'VALIDER', 1, _" Ligne8 = "'BARQUE', 1, 'MER', 5, 'VOILIER', 1, 'MER', 3, 'VALIDER', 1, _" Ligne9 = "'FREGATE', 1, 'MER', 2, 'BARQUE', 1, 'MER', 2, 'VOILIER', 1, 'MER', 6, 'VALIDER', 1, _" Ligne10 = "'FREGATE', 1, 'MER', 5, 'CATAMARAN', 1, 'MER', 2, 'VOILIER', 1, 'MER', 2, 'VALIDER', 1, _" Ligne11 = "'FREGATE', 1, 'MER', 10, 'VALIDER', 1" Procedure1 = Ligne1 & vbCrLf & Ligne2 & vbCrLf & Ligne3 & vbCrLf & Ligne4 & vbCrLf & Ligne5 & vbCrLf & Ligne6 & vbCrLf & Ligne7 & vbCrLf & Ligne8 & vbCrLf & Ligne9 & vbCrLf & Ligne10 & vbCrLf & Ligne11 Procedure2 = Replace(Procedure1, "'", Chr(34)) MsgBox (Procedure2) ProcedureFinie = Array(Procedure2)
Explications d'une ligne pour les curieux : Ligne5 = "'CATAMARAN', 1, 'MER', 3, 'VOILIER', 1, 'MER', 1, 'VALIDER', 1, _"
On dépose 3 catamarans dans la mer et 1 voilier et on valide.
Vous pourriez vous dire que c'est drolement allégé... Mais en fait il y a plein d'autres procedures IDENTIQUES sauf que sur les autres on depose d'autres bateaux avant tout cela, c'est donc pour éviter de recopier 30 fois ce bout de procedure dans les autres.
La MsgBox m'affiche bien :
D'où mon incompréhension quand je met tout ca dans le Array : ProcedureFinie = Array(Procedure2), et que ca m'indique un indice en dehors de plage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 0, "ANNULER", 1, "ANNULER", 1, "VOILIER", 1, "MER", 1, "VALIDER", 1, _ "VOILIER", 1, "MER", 2, "VALIDER", 1, _ "VOILIER", 1, "MER", 4, "VALIDER", 1, _ "CATAMARAN", 1, "MER", 1, "VOILIER", 1, "MER", 3, "VALIDER", 1, _ "CATAMARAN", 1, "MER", 3, "VOILIER", 1, "MER", 1, "VALIDER", 1, _ "BARQUE", 1, "MER", 1, "CATAMARAN", 1, "MER", 1, "VOILIER", 1, "MER", 2, "VALIDER", 1, _ "BARQUE", 1, "MER", 2, "CATAMARAN", 1, "MER", 2, "VOILIER", 1, "MER", 4, "VALIDER", 1, _ "BARQUE", 1, "MER", 5, "VOILIER", 1, "MER", 3, "VALIDER", 1, _ "FREGATE", 1, "MER", 2, "BARQUE", 1, "MER", 2, "VOILIER", 1, "MER", 6, "VALIDER", 1, _ "FREGATE", 1, "MER", 5, "CATAMARAN", 1, "MER", 2, "VOILIER", 1, "MER", 2, "VALIDER", 1, _ "FREGATE", 1, "MER", 10, "VALIDER", 1
Je pense que ce doit etre un probleme minime si quelqu'un le décèle ce serait genial !!
Merci
Clément
Partager