Bonjour,
Je suis en train de décéder, mes neurones s'éteignent un par un...
J'essaie simplement de déclarer un tableau dynamique à 2 dimensions et de faire des redim dessus au fur et à mesure (nombre d'éléments inconnu).
A chaque fois que j'arrive sur la deuxième ligne ReDim Preserve il refuse l'indice... Alors que le but est justement de changer l'indice sinon ça sert à rien. Logique.
Jusque là le système accepte bien et je vois que de taille "vide" il passe bien à une taille (1,1) et j'arrive à mettre une valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Option Base 1 Sub test() Dim Tab() As String ReDim Preserve Tab(1 To 1, 1 To 1)
Ensuite, je boucle, et j'arrive sur une ligne :
Et là il refuse : l'indice n'appartient pas à la sélection.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ReDim Preserve Tab(2, 1)
Si j'enlève le Preserve il accepte pourtant bien et dans la fenêtre espion je vois bien Tab(1,1) et Tab(1,2) avec Tab(1,2) qui prend bien la nouvelle valeur sur la ligne de code suivante...
Code complet :
J'ai donc l'impression que VBA n'accepte pas le redimensionnement d'un tableau dynamique à n-dimension...
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
23
24
25
26
27
28
29
30
31
32
33 Option Base 1 Sub Filtrer() Dim Team() As String i = 2 TeamCol = 5 newIndex = 1 Cells(i, TeamCol).Select CurTeam = Selection.Value ReDim Preserve Team(1 To 1, 1 To 1) Do If CurTeam <> "" And newIndex = 1 Then Team(newIndex, 1) = CurTeam newIndex = newIndex + 1 Else pos = Application.Match(CurTeam, Team(), False) If Not IsNumeric(pos) Then ReDim Preserve Team(2, 1) Team(newIndex, 1) = CurTeam newIndex = newIndex + 1 End If End If i = i + 1 Cells(i, TeamCol).Select CurTeam = Selection.Value Loop While CurTeam <> "" End Sub
Bizarre quand même.
Partager