[Résolu][Calc] Cacher controles case à cocher

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] Cacher controles case à cocher

Messagepar Roby68 » 01 Nov 2019 18:02

Bonjour le Forum

Pour faire suite à la lecture sur Wiki de la gestion des contrôles et tout particulièrement des "Cases à Cocher",
https://wiki.openoffice.org/wiki/FR/Doc ... ment_Forms

Je ne parviens pas à écrire le code correspondant à mon sujet suivant :
Exemple :
J'ai 5 cases à cocher et lorsque je clique sur une, toutes les autres devraient se masquer. Si aucune n'est sélectionnée elles sont toutes visibles.

Merci d'avance pour votre aide ou piste

Roby
Pièces jointes
Roby 191101-01.ods
(10.37 Kio) Téléchargé 4 fois
Dernière édition par Roby68 le 02 Nov 2019 08:10, édité 2 fois.
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 09 Oct 2013 22:12

Re: [Calc] Cacher controles case à cocher

Messagepar OOotremer971 » 01 Nov 2019 19:59

Bonjour,

Avant toutes choses, de grâce utilise Xray sans aucune modération :evil:

A tester :
Code : Tout sélectionner   AgrandirRéduire
Sub MasquerLesAutres(oEv as Object)
leNomDuControleActif = oev.Source.Model.Name
lesControles = oEv.Source.Context.Controls   
for i = LBound(lesControles) to UBound(lesControles)
   if lesControles(i).Model.Name <> leNomDuControleActif then
      if oev.Selected = 1 then
         lesControles(i).Visible = False
      else
         lesControles(i).Visible = True
      end if
   end if   
next
end Sub


Il est préférable de connecter ta Sub à l'événement Statut de l'élément modifié au lieu de Exécuter l'action cela permet de récupérer de suite le statut de la case à cocher par oev.Selected
Roby68.png


Note que dans le fichier que tu as joint, une seules des cases à cocher (la première) est connectée à ta Sub. Je te laisse le soin de faire les autres.
Pièces jointes
Roby 191101-01_Mod1.ods
(9.4 Kio) Téléchargé 4 fois
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Cacher controles case à cocher

Messagepar Roby68 » 01 Nov 2019 20:28

Bonsoir le Forum, OOotremer971,

Merci pour cette piste, mais dans mon cas, la feuille comprend plusieurs Case à cocher autre que dans l'exemple épuré et qui n'ont rien a voir avec ses 5 précisément.

Peut-on dans ce cas faire le "tri" avec les noms exemple : ChxParagraphe1 2 3 4 5 etc et ChxCorpsTxt1 2 3 4 5 etc ou plus basiquement 1 2 3 4 5 …. en prenant que des créneaux 3 à 7 par exemple.

Merci

Pour ce qui est de Xray, je regarde comment l'installer et l'utiliser.

bonne soirée Roby
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 09 Oct 2013 22:12

Re: [Calc] Cacher controles case à cocher

Messagepar OOotremer971 » 01 Nov 2019 20:53

Si je comprends bien, tu veux discriminer les autres contrôle de la feuille pour n'agir que sur ceux dont tu détermineras le nom par exemple ?

Essaye avec ça :
Code : Tout sélectionner   AgrandirRéduire
Sub MasquerLesAutres(oEv as Object)
leNomDuControleActif = oev.Source.Model.Name
lesControles = oEv.Source.Context.Controls   
lesControlesConcernes = array("Case à cocher 1","Case à cocher 2","Case à cocher 3")   
for i = LBound(lesControles) to UBound(lesControles)
   for j = LBound(lesControlesConcernes) to UBound(lesControlesConcernes)
      if lesControlesConcernes(j) = lesControles(i).Model.Name Then   
         if lesControles(i).Model.Name <> leNomDuControleActif then
            if oev.Selected = 1 then
               lesControles(i).Visible = False
            else
               lesControles(i).Visible = True
            end if
         end if
      end if   
   next j
next i
end Sub


Tu donnes la listes des contrôles concerné par le masquage :
Code : Tout sélectionner   AgrandirRéduire
lesControlesConcernes = array("Case à cocher1","Case à cocher 2","Case à cocher 3")

et tu compares avec le nom des autres contrôles pour savoir s'ils sont concernés.
Tu constateras que les contrôles 4 et 5 ne sont pas masqués puisqu'ils ne sont pas dans la liste. Il en sera donc de même avec les autres contrôles de ta feuilles tant qu'il n'apparaîtrons pas dans la liste des contrôles concernés.

 Ajout : fichier remplacé pour correction d'une faute de frappe. Espace manquant dans Case à cocher1==>Case à cocher 1 
Pièces jointes
Roby 191101-01_Mod2.ods
(9.5 Kio) Téléchargé 6 fois
Dernière édition par OOotremer971 le 01 Nov 2019 21:04, édité 1 fois.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Calc] Cacher controles case à cocher

Messagepar Roby68 » 01 Nov 2019 21:02

Bonsoir le Forum, OOotremer971,

On avance, pourquoi le 1er contrôle ne se masque pas si je coche le 2 ou le 3, est ce voulu

Merci encore, cela me va très bien.

Oui j'ai trouvé, une faute de frappe dans les noms concernés.

Bonne soirée et bon Week End à tous

Roby
Dernière édition par Roby68 le 01 Nov 2019 21:05, édité 1 fois.
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 09 Oct 2013 22:12

Re: [Calc] Cacher controles case à cocher

Messagepar OOotremer971 » 01 Nov 2019 21:04

regarde mon ajout dans mon précédent message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Résolu][Calc] Cacher controles case à cocher

Messagepar Roby68 » 01 Nov 2019 22:22

Re bonsoir,

Je viens de m'apercevoir également que mes cases à cocher étaient liées à des cellules avec comme valeurs 1 pour Coché et 0 non coché.
Cela me facilitait pour remettre toutes les cases à cocher à vide en passant par une macro .

Cela ne se fait pas du fait que l'on part sur une sélection. Peut on y remédier malgré tout sans trop changer le code.
Merci encore une fois

Bonne soirée Roby
Pièces jointes
Roby 191101-01_Mod2.ods
(12.25 Kio) Téléchargé 4 fois
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 09 Oct 2013 22:12

Re: [Résolu][Calc] Cacher controles case à cocher

Messagepar OOotremer971 » 01 Nov 2019 23:55

Roby68 a écrit:Je viens de m'apercevoir également que mes cases à cocher étaient liées à des cellules avec comme valeurs 1 pour Coché et 0 non coché.

Certainement pas dans l'exemple que tu as joint.
Roby68 a écrit:Cela me facilitait pour remettre toutes les cases à cocher à vide en passant par une macro .

et qu'est-ce qui t'empêche de continuer à faire pareil ?
Roby68 a écrit:Cela ne se fait pas du fait que l'on part sur une sélection.

j'aimerai bien que tu montres ce qui ne se fait pas et avec quel code et aussi ce qui devrait se faire avec le code que tu utilisais déjà :) .


Merci
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Résolu][Calc] Cacher controles case à cocher

Messagepar Roby68 » 02 Nov 2019 00:15

Re

Oui, en effet, le fichier joint à 23:22 (ce n'est qu'une partie du fichier final), il indique en E4 à E6 pour l'exemple, les cellules liées aux cases à cocher C4 à C6.

Mise à jour avec un bouton de réinitialisation, les cellules E4 à E6 sont à 0 donc non sélectionnées. mais tous les contrôles ne sont pas visibles de ce fait.

Roby
Pièces jointes
Roby 191101-01.ods
(12.73 Kio) Téléchargé 2 fois
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 09 Oct 2013 22:12

Re: [Résolu][Calc] Cacher controles case à cocher

Messagepar OOotremer971 » 02 Nov 2019 01:31

Pour moi il y a une bogue car la macro est connectée à l’événement Statut de l'élément modifié or le fait de modifier le contenu de la cellule liée engendre une modification du statut mais la macro n'est pas exécutée.

à la fin de ta sub qui remet les cellules à zéro, ajoute ce bout de code pour rendre tous les contrôles visibles :
Code : Tout sélectionner   AgrandirRéduire
oControleur = Thiscomponent.CurrentController
lesControles = Thiscomponent.Sheets(0).DrawPage.Forms.GetByIndex(0).ControlModels
for i = Lbound(lesControles) to Ubound(lesControles)
   unControle = lesControles(i)
   oControleur.getControl(unControle).Visible = True
next


A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31

Re: [Résolu][Calc] Cacher controles case à cocher

Messagepar Roby68 » 02 Nov 2019 08:09

Bonjour le Forum, OOotremer971

La parade de remettre tous les contrôles visibles fonctionne très bien mais lorsque je coche le 4ème ou le 5ème contrôle, les deux qui normalement sont indépendant, cache les 3 premiers. Je ne sais pas si tu avais fait le test. Le fichier le montre.
version 6.2
J'ai deux versions de Libre Office la 6.2 et la 5.3, la dernière est installée au bureau, j'ai eu mais pas tout le temps un message d'erreur ( je ne sais pas pourquoi peut-être liée à la version ) : Erreur d'exécution BASIC. Variable d'objet non définie.
En tout cas merci encore pour le temps passé.

Bon Week End à tous

Roby
Pièces jointes
Roby 191101-01.ods
(12.86 Kio) Téléchargé 3 fois
LibreOffice 5.2.6.2 / LibreOffice 5.3 ( au Bureau ) "Par obligation de version".
Win 7 Pro

LibreOffice 6.2.5.2 ( Maison )
Win 10 Pro
Avatar de l’utilisateur
Roby68
Membre OOrganisé
Membre OOrganisé
 
Message(s) : 66
Inscrit le : 09 Oct 2013 22:12

Re: [Résolu][Calc] Cacher controles case à cocher

Messagepar OOotremer971 » 02 Nov 2019 10:19

Roby68 a écrit:mais lorsque je coche le 4ème ou le 5ème contrôle, les deux qui normalement sont indépendant, cache les 3 premiers

C'est normal, les cases à cocher du deuxième groupe sont connectées à la sub qui gère les cases à cocher 1,2 et 3.
Il faut faire une sub différente pour chaque groupe en donnant à chaque fois la liste des contrôles qu'elle doit gérer.

A+
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Ubuntu
OpenSuse Leap
Avatar de l’utilisateur
OOotremer971
HédOOniste
HédOOniste
 
Message(s) : 2142
Inscrit le : 16 Avr 2010 14:31


Retour vers Macros et API

Qui est en ligne ?

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