[Résolu][Calc]Modifier l’aspect d’un bouton dans une feuille

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 !

[Résolu][Calc]Modifier l’aspect d’un bouton dans une feuille

Messagepar Xavier THERY » 29 Avr 2018 07:51

Bonjour
Une macro active et désactive la protection de la feuille de calcul dans Calc. Elle est mise dans un bouton (Bouton3) qui doit modifier son aspect en fonction de l'état de la protection (Protection active / Protection inactive). Je ne sais pas et ne trouve pas comment atteindre le bouton et en modifier l'étiquette (label ou caption ?) et la couleur.
Merci de vos conseils
La macro modifiant la protection où manquent les modifications du bouton :
Code : Tout sélectionner   AgrandirRéduire
sub protection
   rem déclarations
dim loDoc as object
dim loFeuille as object
dim loFeuilles as object
dim dispatcher as object
dim loButton as object
dim MaFeuille as string
dim MonBouton as string
rem affectations
   loDoc = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   loFeuille = ThisComponent.sheets.getByName("DatasMensuelles")
rem condition
   if loFeuille.isprotected then
      loFeuille.unprotect("")
else
      loFeuille.protect("")
   end if
rem : modifications du bouton3 ?
end sub
Dernière édition par Oukcha le 29 Avr 2018 07:57, édité 1 fois.
LibreOffice 5.1.6.2 sous Linux Ubuntu 16.04
Avatar de l’utilisateur
Xavier THERY
Fraîchement OOthentifié
 
Message(s) : 2
Inscrit le : 27 Mars 2018 09:49

Re: [Calc]Modifier l’aspect d’un bouton dans une feuille

Messagepar Oukcha » 29 Avr 2018 07:58

Bonjour et bienvenue,

Image

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche. Avez-vous remarqué comment étaient les autres questions postées ?

Lisez ce fil pour savoir quelle balise utiliser : http://user.services.openoffice.org/fr/forum/sutra27295.html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.

Merci de votre collaboration.
                                        
:arrow: A lire avant tout ! Image
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
 
Message(s) : 2886
Inscrit le : 06 Oct 2008 09:03

Re: [Calc]Modifier l’aspect d’un bouton dans une feuille

Messagepar Mobydick_62 » 29 Avr 2018 09:28

Bonjour,
N'oublie pas de joindre un fichier exemple la prochaine fois. C'est plus pratique pour ceux qui veulent t'aider.
En pièce jointe un fichier que j'ai créé. Ne travaillant pas souvent avec le "dispatcher ", j'ai changé le code.
En cliquant sur le bouton la feuille est protégée ou non. Le nom du bouton change ainsi que sa couleur.

Code ci-dessous:
Code : Tout sélectionner   AgrandirRéduire
Sub ProtectionDeprotection()
  Dim monCtrl As Object, vueCtrl, lesFormulaires, unFormulaire As Object
  Dim oFeuille As Object
  oFeuille = ThisComponent.getSheets.getByName("DatasMensuelles")

  lesFormulaires = oFeuille.DrawPage.Forms
  unFormulaire = lesFormulaires.getByName("Formulaire")
  monCtrl = unFormulaire.getByName("Bouton3")
  vueCtrl = ThisComponent.CurrentController.getControl(monCtrl) 
 
  If oFeuille.isProtected Then
   oFeuille.UnProtect("") 'protection sans mot de passe
   vueCtrl.Model.Label = "Protection inactive"
   vueCtrl.Model.BackgroundColor = RGB(0,166,93)
  Else
   oFeuille.Protect("")
   vueCtrl.Model.Label = "Protection active"
   vueCtrl.Model.BackgroundColor = RGB(237,28,36)
  End If 
End Sub


Cordialement
Pièces jointes
Aspect Bouton.ods
(9.7 Kio) Téléchargé 20 fois
Libre Office Version: 5.4.4.2 (x64)
SE Windows 10
Avatar de l’utilisateur
Mobydick_62
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 57
Inscrit le : 07 Avr 2011 13:04
Localisation : Vendée (France)

Re: [Calc]Modifier l’aspect d’un bouton dans une feuille

Messagepar Hubert Lambert » 29 Avr 2018 17:17

Bonjour,

Lorsqu'une macro est appelée par un élément de l'interface graphique (comme un contrôle de formulaire), un objet "événement" est automatiquement passé comme argument à la fonction appelée. Cet objet contient, entre autres, une référence au contrôle appelant, ce qui permet de sensiblement simplifier le code :
Code : Tout sélectionner   AgrandirRéduire
Sub ProtectionDeprotection(event)
  Dim vueCtrl As Object
  Dim oFeuille As Object
  oFeuille = ThisComponent.getSheets.getByName("DatasMensuelles")
  vueCtrl = event.Source
  [...]

Cordialement.
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 918
Inscrit le : 06 Avr 2016 08:26

Re: [Calc]Modifier l’aspect d’un bouton dans une feuille

Messagepar Xavier THERY » 29 Avr 2018 18:37

Merci à Hubert Lambert et Mobydick_62 dont les réponses et les explications me conviennent parfaitement et me font progresser :D
mes excuses pour le mauvais usage du forum que je ne maîtrise par encore
Xavier THERY
LibreOffice 5.1.6.2 sous Linux Ubuntu 16.04
Avatar de l’utilisateur
Xavier THERY
Fraîchement OOthentifié
 
Message(s) : 2
Inscrit le : 27 Mars 2018 09:49

Re: [Résolu][Calc]Modifier l’aspect d’un bouton dans une feu

Messagepar Mobydick_62 » 30 Avr 2018 08:49

Bien vu Hubert :super:
Effectivement en passant par l'événement c'est bien plus simple. C'est tellement simple que je n'y ai même pas pensé alors que j'ai l'habitude de l'utiliser.
Cordialement
Libre Office Version: 5.4.4.2 (x64)
SE Windows 10
Avatar de l’utilisateur
Mobydick_62
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 57
Inscrit le : 07 Avr 2011 13:04
Localisation : Vendée (France)


Retour vers Macros et API

Qui est en ligne ?

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