[Calc] Utilisation de UniqueCellFormatRanges

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur: Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.

[Calc] Utilisation de UniqueCellFormatRanges

Messagepar Churay » 29 Nov 2016 15:45

Il est possible d'obtenir des collections de toutes les plages de cellules formatées de manière identique contenues dans une plage de cellules source.

Le service com.sun.star.sheet.CellFormatRanges représente une collection de plages de cellules formatées identiquement. Les cellules à l'intérieur d'une plage de cellules de la collection possèdent les mêmes attributs de formatage. Toutes les cellules de la plage source sont contenues dans l'une des plages. S'il existe une plage non rectangulaire de même format, elle est divisée en plusieurs plages rectangulaires.

Le service com.sun.star.sheet.UniqueCellFormatRanges représente, comme Cell Format Ranges, une collection de plages de cellules formatées identiquement, mais cette collection contient des objets de conteneur de zone de cellule (service com.sun.star.sheet.SheetCellRanges) qui contiennent les plages de cellules. Les cellules de toutes les plages à l'intérieur d'un conteneur de plage de cellules sont formatées identiquement. Les attributs de formatage d'un conteneur de plage diffèrent pour chaque autre conteneur de plage. Toutes les plages formatées identiquement sont regroupées en un seul conteneur.

Dans l'exemple suivant, les cellules ont deux couleurs de fond différentes. Les plages formatées de la plage A1: G3 sont interrogées de la manière décrite
UniqueCellFormatRanges.PNG
UniqueCellFormatRanges.PNG (4.26 Kio) Consulté 751 fois

Un objet com.sun.star.sheet.CellFormatRanges contient les plages suivantes: A1: C2, D1: G1, D2: F2, G2: G2 et A3: G3.
Un objet com.sun.star.sheet.UniqueCellFormatRanges contient deux collections de plage com.sun.star.sheet.SheetCellRanges. Une collection contient les plages blanches, c'est-à-dire A1: C2, D1: G1, G2: G2 et l'autre collection, les plages de gris, c'est-à-dire D2: F2, A3: G3.

Source : Developper's Guide - Equally Formatted Cell Ranges

Un exemple avec un Hubert_Lambert_Inside :

Code : Tout sélectionner   AgrandirRéduire
function sommecouleur(plage as string, cellule as string) as long
   MonDocument = ThisComponent
   LesFeuilles = MonDocument.Sheets
   oPlage = LesFeuilles.getCellRangesByName(plage)
   ucfr = oPlage(0).UniqueCellFormatRanges
   total = 0
   couleur = codecouleur(cellule, feuille)
   for each u in ucfr
      if u.CellBackColor = couleur then
         total = total+u.computeFunction(com.sun.star.sheet.GeneralFunction.COUNT)
      end if
   next u
   sommecouleur = total
End function

function codecouleur(cellule as string) as long
   MonDocument = ThisComponent
   maFeuille = monDocument.currentController.ActiveSheet
   codecouleur = maFeuille.getCellRangeByName(cellule).CellBackColor
end function
et le fichier qui va avec
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
 
Message(s) : 2668
Inscrit le : 30 Avr 2009 05:54
Localisation : CATALUNYA

Retour vers Suprême de code

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité