Problème avec matrice dynamique et Redim

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
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
 
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).
 
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
 
- 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

Réponses
5
Affichages
920
Réponses
7
Affichages
484
Réponses
3
Affichages
924
Retour