[Résolu] [Calc] Case à cocher et coloration

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 !
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

[Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Bonjour,

Je me tourne vers vous car on m'a signalé que dans cette section vous pourrez peut être m'aider.

Je commence doucement à m'auto-former sur Calc et vu le peu d'expérience que j'ai je bloque sur une manipulation en particulier et la solution serait peut être le macros.

Voici mon petit problème:

Sur LibreOffice Calc j'ai fait un tableur tout simple pour faire des comptes. Jusque là tout va bien. J'ai crée 2 colonnes (la F et la G) avec des cases à cocher et j'aimerai que dès que je coche ou décoche une case, cette même cellule change de couleur. Par exemple jaune clair quand je coche et blanc quand s'est décoché.

J'ai réussi à faire ça sur deux cellules (F3, F4, F5 et G3) en liant ma case à cocher à sa cellule pour avoir les valeurs VRAI et FAUX puis en faisant un formatage conditionnel.

Le problème c'est qu'avec ma centaine de lignes, je ne peux pas me permettre de lier toutes mes cases à cocher à leurs cellules respectives manuellement :(

Est ce qu'il n'y aurait pas une formule pour lier toutes les cases à cocher automatiquement ?

Ou n'y aurait-il pas une formule qui me permettrai de donner la valeur 1 à la cellule dès que je coche ma case à cocher ? Du style, checkbox envoie 1 si coché et 0 si non. Je m'explique, j'ai réussi à faire en sorte que dès que la valeur de la cellule =1 dans ces 2 colonnes la cellule devienne jaune. Je pense que cela serait peut-être plus simple que de lier toutes les cases à cocher à la cellule.

Si jamais quelqu'un trouve la solution ça serait super :)

Merci grandement :)
compte.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 12 sept. 2021 10:28, modifié 1 fois.
Raison : Balisage
LibreOffice 7.2.0.4
Windows 10 x64
Avatar de l’utilisateur
Dolev
InconditiOOnnel
InconditiOOnnel
Messages : 951
Inscription : 19 août 2018 05:20

Re: [Calc] Case à cocher et coloration

Message par Dolev »

Bonjour,

Il n'y a aucune macro dans le document joint.
nhello a écrit :Est ce qu'il n'y aurait pas une formule pour lier toutes les cases à cocher automatiquement ?
Si tu veux exécuter une formule par macro, tu as ce suprême de code :
https://forum.openoffice.org/fr/forum/v ... 15&t=14625
Lire aussi le lien à la fin du message car tu devras traduire les fonctions appelées en anglais.
Open Office 4.1.15 sous Windows 11
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Calc] Case à cocher et coloration

Message par nhello »

Bonjour,

merci beaucoup pour votre réponse mais je crois que je vais laisser tomber ! En tant que débutante c'est beaucoup trop compliqué pour moi et je ne saurai pas comment commencer :(
Mon fichier restera tel quel et je mettrai en couleur à la main ;)

merci encore
LibreOffice 7.2.0.4
Windows 10 x64
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc] Case à cocher et coloration

Message par micmac »

Bonjour,
[b][color=#404080]nhello[/color][/b] a écrit :je vais laisser tomber
Ceci permet de clore le sujet.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Résolu] [Calc] Case à cocher et coloration

Message par zeguedon »

Bonjour,

Une solution par double-clic dans une cellule des colonnes F et G du fichier joint :

Code : Tout sélectionner

Sub Main(oevt As Object)
cell = oevt.SpreadSheet.GetCellRangeByName("A1")
Select case oevt.Columns.ElementNames(0)
	Case "F","G"
		if oevt.CellStyle = "Default" Then
			oevt.cellStyle = "Jaune"
			oevt.String = ""
			thiscomponent.CurrentController.Select(cell)
		else 
			oevt.CellStyle = "Default"
			oevt.String = ""
			thiscomponent.CurrentController.Select(cell)
		end if		
	end select
End Sub
@+
 Ajout : J'ai vu que ton fichier fréquente Excel :? attends toi dans ce cas à ce que la macro ne fonctionne pas avec ce tableur 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Bonjour,

Merci beaucoup !
Cela marche nickel dans le fichier que vous m'avez envoyer par contre effectivement ça ne marche pas dans mon autre fichier calc. Comment faire pour que cette macro marche dans tout mes tableurs comptes ?

Est que moi après je pourrais utiliser cette macro mais en changeant par exemple la couleur on en enlevant l'espèce de petit caractère qui s'affiche quand on double clique dans la cellule ? Est ce qu'en gros on peut éditer ?

Qu'est ce que cela signifie "fréquente excel" ?

Merci encore.
LibreOffice 7.2.0.4
Windows 10 x64
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

nhello a écrit :
Est que moi après je pourrais utiliser cette macro mais en changeant par exemple la couleur on en enlevant l'espèce de petit caractère qui s'affiche quand on double clique dans la cellule ? Est ce qu'en gros on peut éditer ?
J'ai réussi à enlever le petit caractère en ne mettant pas la ligne en question ;) j'ai pas essayé pour la couleur pour voir si ça marchait !
LibreOffice 7.2.0.4
Windows 10 x64
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Résolu] [Calc] Case à cocher et coloration

Message par zeguedon »

nhello a écrit :Comment faire pour que cette macro marche dans tout mes tableurs comptes ?
https://forum.openoffice.org/fr/forum/v ... 16#p217916
nhello a écrit :Qu'est ce que cela signifie "fréquente excel" ?
Dans les styles, on peut voir ceci :
nhello_1.png
et dans le format conditionnel cela :
nhello_2.png
J'ai remplacé dans ma précédente réponse le fichier initial par un autre pour qu'à la suite du double-clic la cellule ne se mette pas en mode édition.

@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Alors dans votre fichier, si je fais des tests, si je change les colonnes, ou enlève le petit caractère ça marche impeccable. Par contre impossible de changer la couleur, il prend que le jaune.

Par contre cette macro dans mon autre fichier compte ça ne marche pas, même en ayant changé dans le formatage conditionnel le style excel ! J'ai supprimé les excel CondFormat


Voici une autre version du fichier auquel j'ai ajouté la macro:
compte 2.ods
@+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par nhello le 12 sept. 2021 18:12, modifié 1 fois.
LibreOffice 7.2.0.4
Windows 10 x64
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Résolu] [Calc] Case à cocher et coloration

Message par zeguedon »

nhello a écrit :Par contre cette macro dans mon autre fichier compte ça ne marche pas
Effectivement, je n'ai pas pensé à préciser qu'il faut affecter la macro à l'événement de feuille "Double clic". Pour ce faire, clic droit sur l'onglet de la feuille (son nom en bas à gauche) puis dans le menu contextuel, sélectionner "Événements de la feuille" puis dans le dialogue qui survient, sélectionner Double-clic puis le bouton Macro et sélectionner la macro Main du module1 du fichier concerné :
nhello3.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Alors j'ai affecté la fonction double clic mais aucune coloration (dans le fichier compte 2) :(

Est ce qu'il y a une manip supplémentaire à faire pour que ça prenne la couleur donné dans la macro ? Car dans votre fichier (z1 compte) qui fonctionne bien le changement de couleur ne marche pas. Donc je suppose que si ça marche pas dans un autre fichier c'est que j'ai loupé quelque chose.

Dans mon post du dessus je vous ai remis une autre version du fichier dans lequel j'ai enlevé tous les styles CondFormat etc.

Merci encore :)
LibreOffice 7.2.0.4
Windows 10 x64
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Résolu] [Calc] Case à cocher et coloration

Message par zeguedon »

Pour avoir un coloration il faut à minima créer un Style qui portera le nom utilisé dans la macro, en l'occurrence "Jaune"
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Super ça marche parfaitement ! Merci grandement zeguedon :)
LibreOffice 7.2.0.4
Windows 10 x64
Kev74
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 24 avr. 2021 19:09

Re: [Résolu] [Calc] Case à cocher et coloration

Message par Kev74 »

Bonsoir @nhello, grâce à l'aide de Nounours, car mes cases à cocher déconnaient, j'ai réussi à te mettre au point ce que tu voulais.

Je trouve que le fichier est lourd avec toutes ces cases à cocher mais mon processeur commence à se faire vieux aussi. La méthode de @zeguedon est plus épurée à mon goût. Voilà le fichier :
nhello.ods
Toutes les macros que j'avais faite sur le fichier ont été enlevés volontairement pour alléger le fichier, mais si y a un bout de code qui t'intéresserait, fais-moi signe

Bonne journée :P
 Ajout : La coloration en jaune, de même qu'en blanc s'est fait avec le formatage conditionnel au cas où tu chercherais 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0.5.2 sous Windows 10
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Bonjour,

Merci beaucoup :) C'est top !

Oui effectivement je serai intéressée par le bout de code qui permet de lier les cases à cocher à leurs cellules en une seule fois ! Ce qui me permettrai de le reproduire suivant mes fichiers !

Merci beaucoup !

Grâce à vous j'ai appris en peu de temps à faire pas mal de chose sur Calc :)
LibreOffice 7.2.0.4
Windows 10 x64
Kev74
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 24 avr. 2021 19:09

Re: [Résolu] [Calc] Case à cocher et coloration

Message par Kev74 »

Bonsoir, voilà :

Code : Tout sélectionner

Sub CelluleLiée

Dim oLinkedCell as new com.sun.star.table.CellAddress
Dim oNamedValue as new com.sun.star.beans.NamedValue
Dim vFormControlNames()
Dim vField As Object
Dim vCVB As Object

oDoc = thisComponent 

For j = 3 To 460 Step 1
   vField = oDoc.Sheets.getByName("Feuille1").DrawPage.Forms.getByIndex(0).getByName("Case à cocher" & " " & (j+458))
   'ici, cela va te chercher la case à cocher du numéro que tu veuilles, c'est le nom de ta case à cocher 
   oLinkedCell.Sheet = "Feuille1"
   'nom de la feuille où y a les cases à cocher que tu veux relier
   oLinkedCell.Column = 6
   'numéro de colonne où y a la case à cocher que tu veux affecter : A=0; B=1; C=2 etc...
   oLinkedCell.Row = j-2
   'numér de la ligne où y a la case à cocher que tu veux affecter : 0= 1ère ligne, 1=2ème ligne...
   oNamedValue.Name = "BoundCell" 
   'ne pas toucher, permet de créer l'interaction avec vCVB 
   oNamedValue.Value = oLinkedCell
   vCVB = oDoc.createInstance("com.sun.star.table.CellValueBinding")
   vCVB.Initialize(Array(oNamedValue))
   vField.setValueBinding(vCVB)
Next j


End Sub
LibreOffice 7.0.5.2 sous Windows 10
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Bonsoir,

Merci beaucoup !

Je m'y pencherai dès demain !
Merci grandement pour votre aide :)
LibreOffice 7.2.0.4
Windows 10 x64
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Alors j'ai fait vite fait un test.

Est-ce que par contre une fois que j'ai mis ce code dans le LibreOffice Basic est ce qu'il faut que j'enlève les phrases explicatives ?

Est ce qu'il faut que j'enlève l'accent sur la première ligne Sub CelluleLiée ? Car il m'apparaît une erreur de syntaxe.

Je vois egalement un petit j, est ce que cela est en fait le nom de la colonne ?

Est ce qu'après avoir mis ce code il y a une autre manipulation à faire ?

J'ai fait le test dans un autre fichier identique et ça ne marche pas c'est pourquoi je me suis dit que j'ai peut être loupé quelque chose.

Merci encore
LibreOffice 7.2.0.4
Windows 10 x64
Kev74
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 24 avr. 2021 19:09

Re: [Résolu] [Calc] Case à cocher et coloration

Message par Kev74 »

Salut,

Les phrases explicatives, tu peux les laisser ou les enlever, ça change rien du tout.

Oui, j'ai fait une bêtise, il n y a pas d'accent dans une procédure, donc tu peux l'enlever.

Enfaite, le petit j est dans une boucle For que tu voies en haut, si tu sais comment agit une boucle, je pense que tu comprendras vite. Le j permet de chercher le numéro de ta case à cocher sans copier/coller bien sûr et de trouver la ligne que tu veux bind (lier). Enleve le +458 dans la ligne où y a le 1er j après le For, car en faite, c'est ce que j'ai fait avec ton fichier, il allait chercher le 461ème element de case à cocher, donc la Case à cocher 461

Quand tu as mis le code, il reste plus qu'à éxécuter en haut, je pense que tu connais...

Sinon, j'ai trouvé quelque chose de plus intéressant et ludique, le code est dans ce lien : https://wiki.documentfoundation.org/Macros/Calc/006/fr

Tu mets la macro ci-dessus dans un module et ensuite, tu fais bien toutes les étapes que je décris en bas.

Il est plus facile à comprendre, en faite, tu sélectionnes tes cases à cocher dans Affichage > Barres d'outils > Contrôles de formulaires puis tu actives là où y a la souris (sélectionner) et mode conception en même temps (équerre + règle + crayon), ensuite tu fais un rectangle tout au long de tes cases à cocher puis si tu as bien pris leur hauteur et largeur, tu devrais voir des petits carrés verts autour de la selection comme quoi tu les as bien sélectionnés. Et finalement : tu fais un clic-droit bien dans une case à cocher, puis tu fais Ancre > A la cellule (redimensionner à la cellule)
 Ajout : Vérifie bien si tes cellules sont encore sélectionnés avant de lancer la macro 
N'oublie pas d'ensuite d'exécuter la macro, et normalement vu que tes cellules seront ancrées, car grâce à l'ancre, la macro va permettre de retrouver l'adresse de la cellule affectée et ensuite lier comme tu voulais chacune de tes cases à cocher et ce qui est bien, c'est que tes cases à cocher peuvent avoir le même nom avec cette macro. Je sais que ça fait un peu lourd, mais dis-moi si tu comprends pas ou tu préfères tutoriel par image.
 Ajout : Si tu n'as pas beaucoup de cases à cocher, sinon, tu peux ancrer un par un ou faire copier/coller manuellement comme tu avais fait dans le fichier que tu nous avais envoyé, par contre pour la macro, tu peux aussi les sélectionner un par un mais si tu en as beaucoup à lier, mieux vaut passer sur la méthode ci-dessus 
Juste, je te redonne ton fichier avec toutes les cases ancrées au cas où tu changerais la taille des lignes ou colonnes :
nhello.ods
Bonne après-midi :P
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 7.0.5.2 sous Windows 10
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Bonjour,

Je m'y penche dessus dans la soirée et je vous tiens au courant :)

Merci beaucoup :)
LibreOffice 7.2.0.4
Windows 10 x64
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Re,

C'est grandiose ça marche au top !
Merci grandement pour votre aide et d'avoir pris le temps de m'expliquer, c'est juste énorme :)
Merci, merci :)
LibreOffice 7.2.0.4
Windows 10 x64
Kev74
Membre hOOnoraire
Membre hOOnoraire
Messages : 139
Inscription : 24 avr. 2021 19:09

Re: [Résolu] [Calc] Case à cocher et coloration

Message par Kev74 »

Re, donc tu préfères quelle méthode ?
LibreOffice 7.0.5.2 sous Windows 10
nhello
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 11 sept. 2021 10:15

Re: [Résolu] [Calc] Case à cocher et coloration

Message par nhello »

Re,

La méthode en utilisant le code présent dans le lien que vous m'avez donné à marché du premier coup :)
LibreOffice 7.2.0.4
Windows 10 x64