Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Application VBA

3 réponses
Avatar
JLuc69
Salut le groupe,
Pour une application, je voudrais pouvoir utiliser un tableau à deux
dimention, mais pouvoir redimentionner la deuxième dimention dans une
procédure.
A quel endroit dois je le déclaré ? j'ai essayé dans le module en
global, mais pour la déclaration je dois le déclarer sans dimention
(MaTable()).
Pour le redimentionné, je cherche à faire :
MaTable(1, Ubound(MaTable,2)) mais ça ne marche pas, vu que je ne peux
redimentionner que la dernière dimention (Option explicit 0 : les index
commencent à 0, donc c'est un tableau de 2 * x).

Merci de toute proprosition visant à me faire avancer :D
JLuc

3 réponses

Avatar
GL
Le 03/04/2015 18:06, JLuc69 a écrit :
Salut le groupe,
Pour une application, je voudrais pouvoir utiliser un tableau à deux
dimention, mais pouvoir redimentionner la deuxième dimention dans une
procédure.
A quel endroit dois je le déclaré ? j'ai essayé dans le module en
global, mais pour la déclaration je dois le déclarer sans dimention
(MaTable()).
Pour le redimentionné, je cherche à faire :
MaTable(1, Ubound(MaTable,2)) mais ça ne marche pas, vu que je ne peux
redimentionner que la dernière dimention (Option explicit 0 : les index
commencent à 0, donc c'est un tableau de 2 * x).

Merci de toute proprosition visant à me faire avancer :D
JLuc



Vous ne pouvez pas redimensionner un tableau, c'est-à-dire une variable
déclarée comme Dim Tableau(), mais vous pouvez redimensionner un
Variant qui contient un tableau.

Il faut donc déclarer: Dim Tableau (sous entendu: As Variant)
Ensuite, ReDim Tableau permet de changer la borne de la dernière
dimension uniquement:

ReDim Tableau(1 To 12, 1 To 5)

ReDim Preserve Tableau(1 To 12, 1 To 15)

Mais pas: ReDim Tableau(1 to 8, 1 to 15) seule la dernière dimension est
modifiable. C'est une limitation du type.
Avatar
isabelle
bonjour JLuc,

'--- Redéfinit la taille de la dernière dimension du tableau
ReDim Preserve Tableau(1 To 2, 1 To x)

isabelle


Le 2015-04-03 12:06, JLuc69 a écrit :
Salut le groupe,
Pour une application, je voudrais pouvoir utiliser un tableau à deux dimention,
mais pouvoir redimentionner la deuxième dimention dans une procédure.
A quel endroit dois je le déclaré ? j'ai essayé dans le module en global, mais
pour la déclaration je dois le déclarer sans dimention (MaTable()).
Pour le redimentionné, je cherche à faire :
MaTable(1, Ubound(MaTable,2)) mais ça ne marche pas, vu que je ne peux
redimentionner que la dernière dimention (Option explicit 0 : les index
commencent à 0, donc c'est un tableau de 2 * x).

Merci de toute proprosition visant à me faire avancer :D
JLuc
Avatar
JLuc69
isabelle avait écrit le 03/04/2015 :
bonjour JLuc,


Merci à vous deux.

Finalement, j'ai fais la déclaration en global du module :
Dim MaTable

Puis dans le UserForm_Initialize() :
ReDim MaTable(1, 0)

Et enfin, à l'endroit où je m'en sert :
ReDim Preserve MaTable(1, Ubound(MaTable) + 1)

Et....tout fonctionne :oÞ

'--- Redéfinit la taille de la dernière dimension du tableau
ReDim Preserve Tableau(1 To 2, 1 To x)

isabelle


Le 2015-04-03 12:06, JLuc69 a écrit :
Salut le groupe,
Pour une application, je voudrais pouvoir utiliser un tableau à deux
dimention,
mais pouvoir redimentionner la deuxième dimention dans une procédure.
A quel endroit dois je le déclaré ? j'ai essayé dans le module en global,
mais
pour la déclaration je dois le déclarer sans dimention (MaTable()).
Pour le redimentionné, je cherche à faire :
MaTable(1, Ubound(MaTable,2)) mais ça ne marche pas, vu que je ne peux
redimentionner que la dernière dimention (Option explicit 0 : les index
commencent à 0, donc c'est un tableau de 2 * x).

Merci de toute proprosition visant à me faire avancer :D
JLuc