Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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...

 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…