[Résolu] [Calc] 2 macros sous un seul contrôle

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
michelf30
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 19 oct. 2008 12:57

[Résolu] [Calc] 2 macros sous un seul contrôle

Message par michelf30 »

Bonjour,

Comment mettre 2 macros, générant chacune une action, sur un contrôle ? par exemple "rouge" si appuyé, sans couleur si relâché, genre bouton bascule.
J'ai essayé avec plusieurs sans succès.

Je joins un exemple avec deux boutons (et les macros correspondantes) : l'un met un arrière plan rouge dans la cellule sélectionnée, l'autre met un arrière plan sans remplissage (et donc annule le premier). Alors que rappuyer sur le 1er bouton aurait peut-être pu le faire aussi...
Je suis sûr que c'est faisable mais ne trouve ni le bon contrôle, ni la procédure.

cette macro ajoute un arrière plan rouge à n'importe qu'elle cellule et est affectée au bouton "A faire" :

Code : Tout sélectionner

sub Macro1
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "BackgroundColor.Color"
args1(0).Value = 16711680
args1(1).Name = "BackgroundColor.ComplexColorJSON"
args1(1).Value = "{ "+CHR$(34)+"ThemeIndex"+CHR$(34)+": -1, "+CHR$(34)+"Transformations"+CHR$(34)+": [ ]}"

dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, args1())

end sub
cette deuxième macro enlève l'arrière plan rouge et est affectée au 2e bouton :

Code : Tout sélectionner

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "BackgroundColor.Color"
args1(0).Value = -1
args1(1).Name = "BackgroundColor.ComplexColorJSON"
args1(1).Value = "{ "+CHR$(34)+"ThemeIndex"+CHR$(34)+": -1, "+CHR$(34)+"Transformations"+CHR$(34)+": [ ]}"

dispatcher.executeDispatch(document, ".uno:BackgroundColor", "", 0, args1())

end sub

merci d'avance pour votre aide
Michel
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par michelf30 le 04 juin 2025 07:00, modifié 3 fois.
Libreoffice 24.8.2 (M1), sous MacOs Sequoia 15.4.1 (M1)
Java Temurin JRE-21 aarch64 (sous MacOS 15.0)
Avatar de l’utilisateur
Dolev
SuppOOrter
SuppOOrter
Messages : 1146
Inscription : 19 août 2018 05:20

Re: [Calc] 2 macros sous un seul contrôle

Message par Dolev »

Bonjour,
michelf30 a écrit : 31 mai 2025 10:44l'un met un arrière plan rouge dans la cellule sélectionnée, l'autre met un arrière plan sans remplissage (et donc annule le premier).
Mettez en ligne ces 2 macros qu'on voit comment vous faites.
Il suffit de mettre if ... then ... else qui interroge la couleur d'arrière plan.
Open Office 4.1.15 sous Windows 11
Avatar de l’utilisateur
michelf30
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 19 oct. 2008 12:57

Re: [Calc] 2 macros sous un seul contrôle

Message par michelf30 »

Bonjour Dolev
comme indiqué dans mon premier message, il y a un fichier joint avec un exemple et les macros attachées.
Je me lance dans les macros... d'où mes lacunes.

Merci pour l'aide !
Libreoffice 24.8.2 (M1), sous MacOs Sequoia 15.4.1 (M1)
Java Temurin JRE-21 aarch64 (sous MacOS 15.0)
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12668
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Calc] 2 macros sous un seul contrôle

Message par Bidouille »

Bonjour,
michelf30 a écrit : 02 juin 2025 07:10 comme indiqué dans mon premier message, il y a un fichier joint avec un exemple et les macros attachées.
Comme indiqué dans votre précédente question : viewtopic.php?p=390700#p390700
Veuillez publier le code des macros.
Ceci afin qu'il soit indexé par le moteur de recherche du forum.
Vous pouvez également compléter votre demande par des copies d'écran montrant l'effet attendu.
Avatar de l’utilisateur
michelf30
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 19 oct. 2008 12:57

Re: [Calc] 2 macros sous un seul contrôle

Message par michelf30 »

voilà, les codes ont été ajoutés dans mon premier message.

merci !
Libreoffice 24.8.2 (M1), sous MacOs Sequoia 15.4.1 (M1)
Java Temurin JRE-21 aarch64 (sous MacOS 15.0)
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 529
Inscription : 11 mai 2013 00:11
Localisation : Aix en Provence

Re: [Calc] 2 macros sous un seul contrôle

Message par Noonours »

Bonjour à tous
Comme l'a conseillé Dolev, avec un if... then... else, tu peux rattacher à ton bouton un code du genre:

Code : Tout sélectionner

Sub Couleur_ON_OFF()
CouleurRouge = RGB(255,0,0)
CouleurBleue = RGB(0,0,255)
CouleurDefaut = -1
Macell = Thiscomponent.CurrentSelection
If Macell.CellBackColor = CouleurRouge then
Macell.CellBackColor = CouleurBleue 'CouleurDefaut
else
Macell.CellBackColor = CouleurRouge
endif
End Sub
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 24.8.7.2 et OpenOffice 4.1.15 sous Windows 10
Avatar de l’utilisateur
michelf30
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 19 oct. 2008 12:57

Re: [Calc] 2 macros sous un seul contrôle

Message par michelf30 »

Bonjour
et merci ! ça marche en effet.
Je pensais qu'il y avait une subtilité sur le bouton lui même et qu'il fallait mettre une action selon un critère du bouton (en fonction du bouton poussé ou relevé par exemple). En fait il suffit de modifier le code.

Est-il possible de rajouter un 1 avec le "ON" couleur rouge ? je dois faire une cellule booléenne : 1 avec le rouge en couleur de fond, rien ou 0 sans couleur de fond en position OFF. Cela permettra l'utilisation d'une autre macro (proposée par Dude) pour afficher la ligne concernée dans une autre feuille.
Libreoffice 24.8.2 (M1), sous MacOs Sequoia 15.4.1 (M1)
Java Temurin JRE-21 aarch64 (sous MacOS 15.0)
Avatar de l’utilisateur
Noonours
PassiOOnné
PassiOOnné
Messages : 529
Inscription : 11 mai 2013 00:11
Localisation : Aix en Provence

Re: [Calc] 2 macros sous un seul contrôle

Message par Noonours »

Bonjour
michelf30 a écrit :Est-il possible de rajouter un 1 avec le "ON" couleur rouge ?
rajoute dans le script:

Code : Tout sélectionner

MaCell.Value = 1
(et Value = 0 pour l'autre cas)
Je me lance dans les macros...
Je te conseille d'utiliser l'extension XRay pour explorer les propriétés des objets Basic, et parcourir ce forum riche d'inspirations.
Et si tu as plus de questions sur ton fichier, n'hésite pas clôturer ce fil de discussion et à en ouvrir autant d'autres que nécessaire :wink:
Bien cordialement,
Noonours procrastinateur perfectionniste: "Je fais rien, mais demain je l'ferai mieux"

Pour obtenir la réponse la plus précise possible, VEUILLEZ JOINDRE UN FICHIER

LibO 24.8.7.2 et OpenOffice 4.1.15 sous Windows 10
Avatar de l’utilisateur
michelf30
Membre hOOnoraire
Membre hOOnoraire
Messages : 171
Inscription : 19 oct. 2008 12:57

Re: [Calc] 2 macros sous un seul contrôle

Message par michelf30 »

Bonjour

merci à Dolev, et à Noonours pour sa solution et ses explications qui ont permis de répondre à ma question.

Il me reste à bien comprendre le langage utilisé. Je télécharge sans tarder Xray...

Bonne journée !
Michel
Libreoffice 24.8.2 (M1), sous MacOs Sequoia 15.4.1 (M1)
Java Temurin JRE-21 aarch64 (sous MacOS 15.0)