Problème avec matrice dynamique et Redim

Magic_Doctor

XLDnaute Barbatruc
Bonjour à tous,

J'ai rédigé une macro qui fonctionne parfaitement.
Cependant, dans un souci de concision, je voudrais, plutôt que de déclarer individuellemnt tous les éléments de la matrice, les déclarer au travers d'un algorithme dans une boucle.
Je m'explique :

Voici ce qui esty écrit dans la macro et qui marche :

Sub
.
.
.
Dim nbcell(7) As Byte
.
.
.
'[CellPrincipio] étant une cellule nommée qui sert en quelque sorte de balise
nbcell(1) = [CellPrincipio].Offset(0, -3).Value
nbcell(2) = nbcell(1) + [CellPrincipio].Offset(nbcell(1), -3).Value
nbcell(3) = nbcell(2) + [CellPrincipio].Offset(nbcell(2), -3).Value
nbcell(4) = nbcell(3) + [CellPrincipio].Offset(nbcell(3), -3).Value
nbcell(5) = nbcell(4) + [CellPrincipio].Offset(nbcell(4), -3).Value
nbcell(6) = nbcell(5) + [CellPrincipio].Offset(nbcell(5), -3).Value

For i = 1 To [NbSemainesISO].Value
Set firstcell = Cells([CellPrincipio].Row + nbcell(i - 1), [CellPrincipio].Column - 1)
.
.
.
End sub

J'ai tenté d'écrire ceci :

Sub
.
.
.
Dim nbcell() As Byte
.
.
.
For i = 1 To [NbSemainesISO].Value
'algorithme pour définir chaque nbcell
nbcell(i) = nbcell(i - 1) + [CellPrincipio].Offset(nbcell(i - 1), -3).Value
'garde en mémoire le dernier nbcell qui sera nécessaire pour calculer le suivant
ReDim Preserve nbcell(i)

Set firstcell = Cells([CellPrincipio].Row + nbcell(i - 1), [CellPrincipio].Column - 1)
.
.
.
End sub

Ce qui n'a évidemment pas marché... Pourtant je pense que le problème doit se résoudre plus ou moins de la sorte.

Malheureusement mon fichier dépassant légèrement les 48 Ko ne peut être accessible qu'ainsi :
Cijoint.fr - Service gratuit de dépôt de fichiers

Merci pour toute réponse
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Problème avec matrice dynamique et Redim

Bonjour Magic_Doctor, bonjour le forum,

Regarde l'aide VBA sur Redim. Il faut qu 'au départ le tableau de variables soit déclaré vide pour pouvoir le redimensionner...

Remarques
L'instruction ReDim permet de dimensionner et de redimensionner un tableau dynamique ayant déjà été déclaré de manière formelle par le biais d'une instruction Private, Public ou Dim suivie de parenthèses vides (sans indices de dimension).
 

Magic_Doctor

XLDnaute Barbatruc
Re : Problème avec matrice dynamique et Redim

Bonjour Robert,

J'ai simplement résolu le problème en déplaçant Redim :

For i = 1 To [NbSemainesISO].Value
ReDim Preserve nbcell(i) As Byte
nbcell(i) = nbcell(i - 1) + [CellPrincipio].Offset(nbcell(i - 1), -3).Value
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 845
Messages
2 092 770
Membres
105 529
dernier inscrit
StarExcel