Macros/General/003/fr

Récupérer la table de données d'un diagramme
Le programme présenté ici a pour objet de récupérer la table de données source d'un diagramme incorporé dans un document (writer par exemple). Il travaille à partir de la sélection courante (qui doit donc être le diagramme à traiter) et recopie les données dans un nouveau classeur.

Dans l'interface (cf. la copie d'écran ci-dessous) les en-têtes de colonne (noms des séries de données : contrebasse, saxo alto, etc.) sont saisis et présentés sur une seule ligne. Le classeur généré reprendra cette présentation.

L'interface permet en revanche la saisie de plusieurs catégories dans différentes colonnes (cf. la copie d'écran ci-dessous). Le classeur généré reprendra également cette présentation.



Le programme commence par accéder à l'objet incorporé (le diagramme) pour obtenir ses données. Les différentes valeurs figurent dans des tableaux : ComplexRowDescriptions, ColumnDescriptions, Data.

Seule particularité : passage par une variable de travail (LibOTrav) pour affecter à la plage des en-têtes de colonnes le tableau ColumnDescriptions. En effet, la propriété FormulaArray d'une plage sera (pour 3 colonnes x 1 ligne) un tableau T( 0 To 0 ) As object avec pour élément zéro un tableau du type : Tableau : T( 0 To 2 ) As string (0) | string : "contrebasse" (1) | string : "saxo" (2) | string : "percu"

La propriété ColumnDescriptions sera quant à elle (pour 3 colonnes x 1 ligne) un tableau : T( 0 To 2 ) As string Tableau : T( 0 To 2 ) As string (0) | string : "contrebasse" (1) | string : "saxo" (2) | string : "percu"

La propriété FormulaArray doit être affectée "d'un bloc" ; on ne peut pas affecter uniquement l'élément zéro comme on serait tenté de le faire. Une solution est de passer par un tableau "de travail" auquel on affecte ColumnDescriptions, ce qui permet ensuite d'affecter globalement ce tableau de travail à la propriété FormulaArray.

Notes :