FR/FAQ/Calc/123

From Apache OpenOffice Wiki
< FR‎ | FAQ‎ | Calc
Jump to: navigation, search

Il arrive fréquemment que nous devions créer des tableaux sous Calc dans lesquels nous devons effectuer un masquage conditionnel de lignes (la logique étant la même pour les colonnes).

Pour cela, nous allons créer une macro comportant les instructions suivantes (oFeuille et oCellule sont des variables objet, oColonne et i sont des nombres entiers) :

  • oCellule = oFeuille.getCellByPosition(oColonne,i) définira la cellule dont le contenu sera vérifié (oColonne correspond aux ordonnées, i aux abcisses),
  • oCellule.string ou Ocellule.value seront les valeurs qui seront étudiées pour décider ou non du masquage de la ligne correspondante,
  • enfin, on masquera la ligne par l'instruction oCellule.rows.isVisble = false.

Attention : dans les macros, la case supérieure gauche a pour coordonnées (0,0) !

Exemple d'application

Nous avons la liste de prénoms suivante :

  • cellule A4 : Armand
  • cellule A5 : Bernard
  • cellule A6 : Claude
  • cellule A7 : (vide)
  • cellule A8 : (vide)
  • cellule A9 : Félix
  • cellule A10 : Gustave

La macro ci-dessous va permettre de masquer les vides (mais pas de supprimer les lignes, sujet pour lequel on peut se reporter au dossier [cellules et plages/http://wiki.services.openoffice.org/wiki/FR/Documentation/BASIC_Guide/Cells_and_Ranges]).

Les valeurs de cases vides de texte sont recherchées (oCellule.string = ""); on peut aussi chercher les valeurs zéro en rajoutant l'instruction "or oCellule.value = 0".


Sub Masquage

REM Masquage conditionnel de lignes dans un tableau avec une cellule texte vide à gauche

dim oFeuille As Object

dim oCellule As Object

dim oColonne As integer

dim i as integer

oFeuille = ThisComponent.CurrentController.ActiveSheet 'Définit la feuille de travail

oColonne = 0

REM Masquage des lignes avec prénoms

      for i = 3 to 9 'Numéros des lignes à vérifier
         oCellule = oFeuille.getCellByPosition(oColonne,i) 'Définit la cellule à vérifier i=ligne
         if oCellule.string = "" then oCellule.rows.isVisible = false 'si case prénom vide, masquer la ligne
      next i

End Sub


Pour insérer cette macro et la faire fonctionner :

  • Créez le tableau avec les prénoms sous une feuille Calc
  • Outils/Macros/Gérer les macros/Openoffice basic
  • Cliquez sur "Main"
  • Faites éditer
  • Copiez le texte de la macro ci-dessous à la suite du précédent End Sub.
  • Faites Fichier/Enregistrer
  • Fermez la boîte de dialogue
  • De retour dans la feuille, appelez la macro, en faisant Outils/Macros/Exécuter la macro, puis dans la Bibliothèque, choisissez Mes Macros/Standard/Module 1, le nom de la macro étant "Masquage".

Les deux lignes vides seront alors masquées.

Personal tools