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

  • Initiateur de la discussion Initiateur de la discussion g.milano
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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:
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...
 
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
 
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.
 
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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
500
Réponses
10
Affichages
759
Réponses
40
Affichages
2 K
Réponses
3
Affichages
520
Retour