[Résolu][Calc] Interrogation protection cellule

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Joub
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 sept. 2012 19:53

[Résolu][Calc] Interrogation protection cellule

Message par Joub »

Bonsoir,

Bon alors j'ai parcouru le forum en long, en large et en travers sans trouver ma solution, ainsi que le bouquin OpenOffice.

Je suis toujours sur mon fichier.

Il y a des cases qui sont protégées pour ne pas être modifiées.
Je les ai protégées en manuel dans "Formatage de la cellule".
Puis j'ai appliqué une protection à la feuille.

Seules les cellules du planning peuvent être modifiées.

Mais si je sélectionne une cellule, par exemple "E2" et que je clique sur un bouton "MDL" ( ou autre), un texte s'affiche dans cette cellule, malgré la protection.

Dans j'ai voulu mettre en place un test de la protection de la cellule pour empêcher l'écriture mais j'ai l'erreur: "Propriété ou Méthode non trouvées: IsProtected"
Cela fonctionne sur la page pas que sur une cellule...

Code : Tout sélectionner

Sub Service(evt)

Dim Dlg As Object
Dim dispatcher as Object, cell as Object, btn as Object, Sheet as Object, Sheets as Object, Cell2 as Object, Choix as Object
Dim ChampChoix as String
Dim Ligne as Long, Colonne as Long

document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
btn = evt.source.model
sel = thisComponent.currentSelection
Cell = ThisComponent.getCurrentSelection
Ligne = Cell.CellAddress.row
Colonne = Cell.CellAddress.column
Sheets = ThisComponent.sheets

Sheet = Sheets.getByName("Semaine")

Cell2 = Sheet.getCellByPosition(Colonne + 72, Ligne)

  
   If Sel.isProtected then
		 MsgBox("Sélectionnez une case correspondant à un jour de la semaine.")
		 GoTo 0
   End if

   If sel.SupportsService("com.sun.star.sheet.SheetCell") Then
      If cell.string="" Then
         cell.string = btn.name
         cell.cellBackColor = btn.backgroundColor
         dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
      Else          
         Dialoglibraries.loadlibrary("Sif")
         Dlg = CreateUnoDialog(DialogLibraries.Sif.SecondService)
         Dlg.execute
         
         Choix = Dlg.getControl("Service")
         ChampChoix = Choix.Text         
      End if

      Select case ChampChoix
   
         Case "Modifier Service"
            cell.string = btn.name
            cell.cellBackColor = btn.backgroundColor
            dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())
         Case "Ajouter Second Service"
            cell2.string = btn.name
            cell2.cellBackColor = btn.backgroundColor
            dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())                                 
         Case "Modifier Second Service"
            cell2.string = btn.name
            cell2.cellBackColor = btn.backgroundColor
            dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0, Array())          
         End Select
       End If
       
       0
            
End Sub
Suis-je encore un boulet où une solution existe?

Le code complet est dans le module "Service".

En espérant avoir été clair sur mes explications.

Le codage de mon fichier est peut-être lourd désolé pour les adeptes de la finesse.

Merci d'avance.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Joub le 26 juin 2015 07:55, modifié 1 fois.
Libre Office Version: 4.2.5.2 sous Linux Ubuntu (pas la peine de me dire pas à jour, je ne peux pas changer! :( )
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 936
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Interrogation protection cellule

Message par luky-luke »

Bonjour
essaies ça.

Code : Tout sélectionner

   If Sel.CellProtection.islocked then
		 MsgBox("Sélectionnez une case correspondant à un jour de la semaine.")
		 GoTo 0
   End if
Joub a écrit : En espérant avoir été clair sur mes explications.
Y'a du progrès !
Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc] Interrogation protection cellule

Message par bm92 »

Joub a écrit :j'ai parcouru le forum en long, en large et en travers sans trouver ma solution, ainsi que le bouquin OpenOffice.
Pour information: livre page 423, section Protéger une cellule.
Le texte explique le codage (correct) de luky-luke.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Joub
Membre lOOyal
Membre lOOyal
Messages : 35
Inscription : 28 sept. 2012 19:53

Re: [Calc] Interrogation protection cellule

Message par Joub »

Bonjour,

Merci Luky-luke, ça marche niquel.

J'avais pas chercher avec le bon terme à la vue de la réponse.

bm92, tu as une version récente du livre ? Cela pourrais m'intéresser.
Sur le mien c'est page 412...

Merci à vous.

Je vais essayer maintenant de m'atteler à trouver une solution pour renommer des boutons quand on clique dessus...ce n'est pas gagné..lol :fou:
Libre Office Version: 4.2.5.2 sous Linux Ubuntu (pas la peine de me dire pas à jour, je ne peux pas changer! :( )