Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

laurent950

XLDnaute Barbatruc
Bonsoir le forum,

J'ai réalisé une variable tableau "TYPE"
cette déclaration de tableau : TMtab(1 To 3) à une dimension
de 3 cases serviront plus tard par appelle dans la procédure

Avec un autre tableau "t()" déclarer avec une variable
de "TYPE" MultiTab ce tableau servira à stoker les
données des tableaux TMtab(1 To 3) dans chacune des
cases du tableau t()

Déclaration du tableau : dim t() as Multitab
Avec la variable Type

code ci-dessous :

VB:
  Type MultiTab
TMtab(1 To 3)
End Type

Sub ModuleVariableType()

Dim t() As MultiTab
x = 3
ReDim t(1 To x)

nb = 1
NTab = 1
For i = 1 To x
' Remplissage Mtab
    For j = 1 To 3
    t(i).TMtab(j) = "Tab" & NTab & "....Case N°" & nb
    Next j
    nb = nb + 1
    NTab = NTab + 1
Next i

col = 1
For a = 1 To x
Cells(1, col).Resize(UBound(t(a).TMtab)) = t(a).TMtab
col = col + 2
Next a

End Sub

La question que je me pose, comment faire la même chose avec un module de classe pour
remplir des tableaux sous le même mode sans être obligé de passer par une Variable Type

Je ne suis pas pressé, j'aimerais connaitre une solution si il y a et partager cela avec d'autre personne que
cela intéresse aussi, je ne manquerais pas de partager cette information des que j’aurais trouvé
enfin si je trouve la solution ;-))

Merci

laurent
 

Pièces jointes

  • ModuleVariableTableauTypeEnModuleClasse.xlsm
    18.4 KB · Affichages: 68
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

Bonsoir.
De toute façon les tableaux ne sont pas supportés en tant que propriétés dans les modules de classe.
Mais comme variables internes, pas de problème.
Ici le Type MultiTab ne me parait à première vue pas indispensable. Vous pourriez utiliser un tableau à 2 dimensions.
Remarque: je n'ai pas encore ouvert votre classeur.
À +
 

laurent950

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

Bonsoir Dranred,

Vous avez un exemple pour réaliser ce tableau en variables interne dans le module de classe avec un tableau
à deux dimension je n’ai pas l’idée de cette construction. Vous avez un exemple s’il vous plais ?
je vous remercie de m’avoir lu est répondu.

laurent
 

Dranreb

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

C'est que je ne comprend pas exactement ce que vous voulez faire.
Votre programmation me parait avoir un caractère trop expérimental pour bien représenter à mes yeux vos inquiétudes quant à la faisabilité de certaines choses. Essayez peut être de me présenter tout ça sous un autre angle.
Et partez du principe qu'un module de classe doit être autonome dans la gestion de son contenu: il doit se débrouiller avec ce qu'on lui donne au moyen de méthodes qui lui sont écrites pour cela. Ce qu'il en fait à l'intérieur ne regarde pas l'extérieur. À moins que ce ne soit un tout petit module de classe en quelque sorte passif servant juste à permettre une chose très simple mais normalement impossible, tel que gérer des évènements d'objets éléments d'un tableau.
À +
 
Dernière édition:

laurent950

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

Bonsoir Dranred,

Jai travailler sur le sujet pour l'instant je suis arrivé a cela :

1 Tableau à 1 dimension "Trest" dont le nombres de cases est redimensionné pour acceuillir un tableau dans chacunes des cases du tableau "Trest".

et cela peux importe la taile des tableaux stoké (1 Dimension ou plus d'une dimension)

Est-il possible de faire la même chose différemment en passant par un module de classe (sans Tableaux emboité).

Pour info le remplissage de ces différent tableaux est remplis avec (des valeurs fictives)

Voici le code :

VB:
Sub Temboitement()

Dim Trest() As Variant

' Variable pour remplissage de T1 (valeur test)
lig = 2
col = 3
Index = 1
nl = 1
nc = 1

' Pour test 3 tableaux différent dans un tableau a une dimension
' T1 = 3 tableaux différent (Ligne est colonne différentes)
' avec le même tableau T1
Dim T1() As Variant

For i = 1 To 3
' nouvelles dimension "T1" pour test
ReDim T1(1 To lig, 1 To col)
    
    For j = 1 To UBound(T1, 1)
        For k = 1 To UBound(T1, 2)
            T1(j, k) = "Tab" & Index & "..." & "Case L" & nl & " / " & "C" & nc
        nc = nc + 1
        Next k
    nc = 1
    nl = nl + 1
    Next j

' nouvelles dimension "Trest" pour test
ReDim Preserve Trest(1 To i)
' Transfert T1 dans Une case de Trest
Trest(i) = T1
'MsgBox Trest(i)(1, 1)
' decharge le tableau T1
Erase T1


' Variable pour remplissage de valeur test
lig = lig + 2
col = col + 1
nl = 1
nc = 1
Index = Index + 1
Next i

'MsgBox Trest(1)(1, 1)

' Transfert de ces trois tableaux "T1" dans excel
col = 1
For a = 1 To UBound(Trest)
Cells(1, col).Resize(UBound(Trest(a), 1), UBound(Trest(a), 2)) = Trest(a)
col = col + UBound(Trest(a), 2) + 1
Next a
End Sub

Je ne sais pas si je suis dans les clous ? Si j'ai tous compris mais je voudrais stocker ces différents tableaux non pas dans un tableau a une dimension mais indépendamment à partir d'un appel par un module de classe.

Voici le lien que j'ai trouvé : (Je n’ai pas saisie la construction en passant par un module de classe)
Chapitre = IV-A-6. Propriété renvoyant un tableau
1) IV-A-6-a. Exposition d'un tableau typé (Ici en type)
2) IV-A-6-b. Exposition d'un Variant (Ici en Variant)
lien : Office et les modules de classes

Je vous ai répondu est je serais ravis d'avoir une réponse de votre part, j'ai eu du mal a la construction de ce principe,

J'ai fait dans ces postes #1 et #5
Variable tableau Type (dans ce premier poste # 1)
Variable tableau Emboité (Ici sur ce poste # 5)

Laurent
 

Pièces jointes

  • TableauEmboiter.xlsm
    20.2 KB · Affichages: 63
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

Je ne sais pas si je suis dans les clous ?
Si, si.
Mais dans votre exemple poste #1 vous aviez plusieurs tableaux de même dimensions. Inutile alors de passer par autre chose, comme un Type, que par un tableau à 2 dimensions. Dès lors qu'on à des choses disparates (tableaux de divers types et dimensions, en nombre et en limites, + objets (mais oui, aussi !) on peut grouper tout cela dans un tableau de Variant, membre de collection voire comme Item de Dictionary.
voyez ce qu'on peut faire ici
À +
 
Dernière édition:

laurent950

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

Merci Dranred,

J'ai mis le paquet pour comprendre le fonctionnement de ces tableaux imbriqués, c'est quand même hyper puissant.
Aussi par rapport au site developpez il y a un poste avec les modules de classe et variable tableau.

Je n'ai pas compris comment cela fonctionne malgré des efforts et persévérance, peux être vous avez un exemple par rapport à ce qui est écrit sur ce site developpez ? Franchement a force de décrypter tous ces codes je vais ressembler a "Champollion" ;-))

Mais je suis content de me creuser la tête est cela est intéressant. Si vous avez un exemple même dans la même idée que mon exemple, alors je vous remercie car je n’y arrive vraiment pas enfin pour l'instant.

Je vous dis un grand Merci pour m'avoir aiguillé dans la bonne directions des tableaux emboités

Laurent
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Comment passer en Variable Tableau En "Module De Classe" Evitant "Variable TYPE"

Examinez mon lien poste précédent
Ainsi que l'organisation du OutIdx ci dessous.
À +
 

Pièces jointes

  • SynOutIdx.jpg
    SynOutIdx.jpg
    40.3 KB · Affichages: 193
  • SynOutIdx.jpg
    SynOutIdx.jpg
    40.3 KB · Affichages: 221
  • SynOutIdx.jpg
    SynOutIdx.jpg
    40.3 KB · Affichages: 225

Discussions similaires

Réponses
29
Affichages
2 K

Statistiques des forums

Discussions
314 651
Messages
2 111 557
Membres
111 201
dernier inscrit
netcam