— FONCTION GIGOGNE (Une gigogne en contient souvent plein d'autres emboîtées, d'où ce nom.) —
Function Gigogne(ByVal PlageOuTableau, ParamArray ColOrd() As Variant) As Collection
Renvoie une collection d'éléments de type SsGr. On la parcourt donc à l'aide d'au moins une variable déclarée As SsGr.
Ces éléments ont une propriété Id As Variant et une autre Co As Collection. Vous aurez à les utiliser aussi dans votre code.
PlageOuTableau La plage ou le tableau source de la collection désirée. Sont supportés :
Une expression Range représentant une plage de plusieurs lignes, ou faisant partie d'une plage
mise sous forme de tableau Excel (c'est alors celle ci qui sera retenue).
Une expression Range représentant une plage d'une seule ligne n'appartenant pas à une plage
mise sous forme de tableau Excel (elle sera étendue jusqu'à la dernière ligne renseignée).
Une expression Range représentant une plage d'une seule cellule n'appartenant pas à une plage
mise sous forme de tableau Excel (elle sera étendue jusqu'à la dernière cellule renseignée).
Un tableau 2D d'éléments de type Variant, à considérer tel quel.
Une expression ListObject représentant un tableau Excel.
Une expression Worksheet représentant une feuille Excel contenant au moins une plage
mise sous forme de tableau Excel.
Une expression String à évaluer.
La constante Null peut aussi être spécifiée si le tableau a déjà été spécifié auparavant, soit
en tant que ListObject à RàZArguments, soit d'une façon ou d'une autre à DicInvent.
ColOrd Liste d'entiers dont les valeurs absolues représentent les n° de colonnes des
arguments, et leurs signes le sens croissant ou décroissant du classement souhaité.
C'est selon ce que vous voulez pouvoir programmer derrière, conformément aux structures
expliquées ci après, que vous devez les définir.
Remarque: Un élément String sera interprété comme un titre de tableau Excel (ListObject) après retrait
d'un éventuel "+" ou "-" au début. Mais si c'est un "-" la colonne sera classée en ordre décroissant.
À part ça, un élément non numérique ou omis dans la liste marquera la fin des colonnes
définissant l'organisation du résultat, mais des colonnes supplémentaires spécifiées
derrière pourront encore influencer le classement des lignes de détail.
Il est aussi possible de ne rien spécifier s'ils ont déjà été donnés un par un avec AjoutArgument.
Le résultat de Gigogne peut être affecté à une collection :
Dim MaGigogne As Collection, MaPlage As Range
Set MaGigogne = Gigogne(MaPlage, 1, 2, -3, , 4, 5)
Mais on n'en utilisera en général pas, mais plutôt directement Gigogne(etc. dans la suite.
Dim MaPlage As Range, Niv1 As SgGr, Niv2 As SsGr, NivX As SsGr
La collection s'explore normalement par :
Initialisations globales
For Each Niv1 In Gignogne(MaPlage, etc…) '(ou bien éventuellement In MaGigogne)
TraitementDeNiveau
Next Niv1
ConclusionEtTotaux généraux
La structure d'un Traitement de niveau est la suivante :
Initialisations IntituléRubrique:=NivX.Id
For Each Élément In NivX.Co
StructureInterne
Next Élément
ConclusionEtTotaux pour:=NivX.Id
S'il concerne une autre colonne que la dernière spécifiée en ColOrd (avant vide, null etc.),
Élément sera un SsGr et la structure interne devra être à son tour un traitement de niveau.
S'il concerne la dernière colonne spécifiée (avant vide, null etc.), Élément sera un Variant
contenant un tableau à une dimension reproduisant les valeurs d'une ligne de PlageOuTableau.
Dans la Structure interne, un Élément(C) représentera donc la valeur présente en colonne C.