[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 !
Avatar de l’utilisateur
Xavier THERY
Fraîchement OOthentifié
Messages : 2
Inscription : 27 mars 2018 08:49

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

Message par Xavier THERY »

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

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 modification par Oukcha le 29 avr. 2018 06:57, modifié 1 fois.
LibreOffice 5.1.6.2 sous Linux Ubuntu 16.04
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4357
Inscription : 06 oct. 2008 08:03

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

Message par Oukcha »

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/ ... 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.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Avatar de l’utilisateur
Mobydick_62
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 07 avr. 2011 12:04
Localisation : Vendée (France)

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

Message par Mobydick_62 »

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

 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
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 7.0.4 (x64)
SE Windows 10
Avatar de l’utilisateur
Hubert Lambert
SuppOOrter
SuppOOrter
Messages : 1214
Inscription : 06 avr. 2016 07:26

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

Message par Hubert Lambert »

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

 Sub ProtectionDeprotection(event)
  Dim vueCtrl As Object
  Dim oFeuille As Object 
  oFeuille = ThisComponent.getSheets.getByName("DatasMensuelles")
  vueCtrl = event.Source
  [...]
Cordialement.
AOOo 4.1.7 sur Win10
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
Xavier THERY
Fraîchement OOthentifié
Messages : 2
Inscription : 27 mars 2018 08:49

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

Message par Xavier THERY »

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
Mobydick_62
Membre OOrganisé
Membre OOrganisé
Messages : 80
Inscription : 07 avr. 2011 12:04
Localisation : Vendée (France)

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

Message par Mobydick_62 »

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: 7.0.4 (x64)
SE Windows 10