Date: prev next · Thread: first prev next last
2016 Archives by date, by thread · List index


Bonsoir Michel,

Le 06/03/2016 18:08, Michel Rudelle a écrit :

Pour protéger une feuille Calc par macro, l’instruction suivante marche très
bien : oFeuille.protect("motDePasse")

Mais je ne trouve pas comment désélectionner les autorisations :

   - Sélectionner les cellules protégées

   - Sélectionner les cellules non protégées


Je ne sais pas ce que tu veux accomplir précisément. Alors voici qq idées, en vrac.


Ce bout de code qui parcourt une feuille ne pourrait-il pas te servir de base ? (trouvé ici : [1])


Sub LockCells(oRange As Object)
   Dim Doc As Object
   Dim oSheet As Object
   Dim oCell As Object
   Dim p As New com.sun.star.util.CellProtection
   Dim col As Long
   Dim row As Long

   Doc = ThisComponent
   oSheet = Doc.Sheets(oRange.RangeAddress.Sheet)
   oSheet.unprotect("Password")

   For col = 0 to oRange.Columns.Count - 1
      For row = 0 to oRange.Rows.Count - 1
         oCell = oRange.getCellByPosition(col,row)
         p = oCell.CellProtection
If oCell.getType() <> com.sun.star.table.CellContentType.EMPTY and not p.IsLocked Then
            p.Islocked = True
            oCell.CellProtection = p
         End If
      Next Row
   Next col

   oSheet.protect("Password")

End Sub

En le combinant avec :
1. La création d'un range sur les cellules (non)protégées trouvées
2. La sélection du range ensuite

Mieux (?) mais je n'ai jamais essayé dans ce type d'usage : utiliser queryContentCells(CellFlags)
avec CellFlags à : com.sun.star.sheet.CellFlags.HARDATTR (ou STYLES)
Plus d'infos dans OOME par Andrew Pitonyak [2]


Tu trouveras sans doute aussi dans la bible par saints Marcelly et Godard, édition 2011, des idées à combiner. Voir au chapitre 9 les rubriques :
-- Protéger une cellule (p.423)
-- Énumérer les cellules d'une zone (p.448)


[1] https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=34393
[2] http://www.pitonyak.org/OOME_3_0.pdf

--
Jean-Francois Nifenecker, Bordeaux

--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.