[RESOLU] Impossibilité de faire un ReDim (sur mon PC ?)

g.milano

XLDnaute Junior
Bonjour,

J'ai besoin de redimensionner un tableau dans une boucle, mais mon Excel 2010 refuse de le faire.

Après quelques recherches, voici ou j'en suis :

L'exemple de Ce lien n'existe plus déclenche une erreur de compilation avec ceci (en rouge la partie surlignée par VBA editor) :

Sub aa()

Dim intArray(10, 10, 10) As Integer
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

End Sub




Cet autre exemple d'excelabo.net (macro Ce lien n'existe plus qui est exactement ce que je veux faire) me déclenche une erreur 9 indice hors sélection (en rouge la partie surlignée par VBA editor). Je l'ai copiée-collée tel quelle !

Sub redimarray2D()

Dim Tblo() As Integer 'l'array est declare et dimensionne de facon dynamique
Dim a As Integer
Dim i As Integer, j As Integer

ReDim Tblo(3, 3) 'au premier redimensionnement, on definit les limites des deux dimensions
'remplissage d'un array de 9 elements (3x3)

For j = 1 To 3
For i = 1 To 3
a = i * 10 + j
Tblo(i, j) = a
Next i
Next j
'on etend cet array dans une de ses dimensions pour lui ajouter 6 nouveaux elements (3x2)

For j = 4 To 5
'la boucle exterieure est celle de la dimension qui varie (la derniere de l'array)
ReDim Preserve Tblo(1 To 3, 1 To j)
MsgBox j
For i = 1 To 3
a = i * 10 + j
Tblo(i, j) = a
Next i
Next j
End Sub

Pour info, j'ai mis un "MsgBox j" avant et après la ligne fautive. Avant, j'ai bien 4 ; après, ça plante com d'hab' (donc la première boucle avec j=4 ne se fait pas)



Auriez-vous une explication sur le fait que ces exemples ne marche pas ?

Merci pour votre aide.
 
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Impossibilité de faire un ReDim (sur mon PC ?)

Bonjour

télécharge
Ce lien n'existe plus
et regarde dans VBA le module testsdirects, la macro est dedans. Teste là à partir de ce classeur.
Mais là je pars en réunion pour un moment...
 

mécano41

XLDnaute Accro
Re : Impossibilité de faire un ReDim (sur mon PC ?)

Bonjour à tous,

Pour le premier cas, il ne faut rien mettre entre les parenthèses : Dim IntArray() as integer

Pour le second :

- soit tu mets Option base 1 au début (tableau commençant à indice 1)
- soit tu mets dans les Redim (0 to 3, 0 to j) ...(tableau commençant à indice 1)

Cordialement
 

Misange

XLDnaute Barbatruc
Re : [RESOLU] Impossibilité de faire un ReDim (sur mon PC ?)

Bonjour Mécano
"soit tu mets dans les Redim (0 to 3, 0 to j) ...(tableau commençant à indice 1)"
euh... si le tableau commence à l'indice 1; il faut mettre 1 to 4 :)
L'exemple d'excelabo dont parle g.milano est tiré de cette page
Ce lien n'existe plus
dans laquelle je traite le cas d'un array alimenté par un range. Dans ce cas il n'est pas nécessaire de préciser option base 1 car c'est obligatoirement le cas dans cette situation.
 

mécano41

XLDnaute Accro
Re : [RESOLU] Impossibilité de faire un ReDim (sur mon PC ?)

Bonjour Misange,

Ce que je veux dire c'est :

- si je copie tel quel le code indiqué dans "Changer la seconde dimension d'un array", il bogue où l'a indiqué en rouge G.Milano en rouge dans son premier message, soit à : ReDim Preserve Tblo(1 To 3, 1 To j).

- si je met Option base 1 cela fonctionne et donne à la fin des données de Tblo(1,1) à Tblo(3,5)

- si je ne mets pas Option base mais que je mets : ReDim Preserve Tblo(0 To 3, 0 To j) cela fonctionne et donne à la fin des données de Tblo(0,1) à Tblo(0,5) puisque les indices zéro restent inutilisés (=0)

Cordialement
 

Misange

XLDnaute Barbatruc
Re : [RESOLU] Impossibilité de faire un ReDim (sur mon PC ?)

Bonjour Mecano,

OK si quelqu'un saute la ligne ou il est écrit que ce code est fait pour travailler à partir d'un range et qu'il veut l'utiliser autrement, il faut effectivement qu'il précise option base 1 ou qu'il change les indices. MAis bon...
Je vais rajouter cela dans le tuto.
[edit] modif faite
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
281
Réponses
29
Affichages
790

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa