[Résolu] Récupérer les choix d'une zone de liste

Discussions à propos du traitement de textes Writer mais également sur l'éditeur HTML.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Toine-W
Fraîchement OOthentifié
Messages : 3
Inscription : 18 mars 2020 20:04

[Résolu] Récupérer les choix d'une zone de liste

Message par Toine-W »

Bonjour,

Je suis débutant sur Libreoffice Writer, je souhaiterai savoir si il était possible de récupérer les choix fait dans une zone de liste.

Par exemple ma zone de liste propose : 1 - Télé
2 - Ordinateur

avec un bouton " + " sur le coté.

je choisit par exemple "Télé" en premier, je clique sur le "+", j'ai mon choix qui s'affiche en dessous : Télé

je choisit par exemple en second "Ordinateur", je clique sur le "+", j'ai mon choix qui s'affiche en dessous : Télé
Ordinateur

Cela est-il possible sur libreoffice Writer ?
ou peut-être avec des macro ou sur libreoffice calc ?

Merci d'avance de votre réponse.

Cordialement.
libreoffice 6.4.1 et Windows 10
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: Récupérer les choix d'une zone de liste

Message par Jean-Louis Cadeillan »

Bonsoir et bienvenue,
Une zone combinée serait peut-être préférable dans ton cas de figure : tu n'as pas besoin de récupérer quoi que ce soit, c'est la zone elle-même qui peut être incorporée au texte. On peut la rendre déroulante (petite flèche à droite pour dérouler les choix) ou non (ce sont les flèches haut et bas du clavier qui permettent de changer de choix). À tester ci-joint :
Toine-W_20200318_JLC01.odt
Dans Calc, Données > Validité permet de faire quelque chose d'assez voisin.
Cordialement,
Jean-Louis
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_481) et AOO 4.1.16 (Adoptium 19.0.2.7)
Toine-W
Fraîchement OOthentifié
Messages : 3
Inscription : 18 mars 2020 20:04

Re: Récupérer les choix d'une zone de liste

Message par Toine-W »

Bonsoir,

Merci de votre réponse

je comprend ce que vous m'expliquez, mais moi je voudrai récupérer plusieurs choix

à la fin j'aimerai obtenir un truc du style : "vous avez choisit : Ordinateur et télé" si la personne à ajouter une télé et ensuite un ordinateur avec la zone de liste.

peut être cela est accessible avec des macros ?
libreoffice 6.4.1 et Windows 10
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 10071
Inscription : 28 août 2010 08:45

Re: Récupérer les choix d'une zone de liste

Message par micmac »

Bonjour et bienvenue,
  1. Dans votre signature il y a écrit : libreoffice 6.4.1
    Cette version de LibO est une version expérimentale.
    Il est fortement recommandé d'être à jour de la dernière version stable.
    .
  2. Joindre un fichier débarrassé d'éléments confidentiels facilite le travail des bénévoles en évitant de jouer aux devinettes et de recréer quelque chose qui, au final, pourrait ne pas convenir pour le traitement de la question.
    Comment joindre un fichier.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Toine-W
Fraîchement OOthentifié
Messages : 3
Inscription : 18 mars 2020 20:04

Re: Récupérer les choix d'une zone de liste

Message par Toine-W »

Bonjour,

Oui, je m'en excuse, je vais mettre une pièces jointe.

J'ai réussi à créer une macro qui ouvre une boite de dialogue et renvoie le choix fait dans la boite de dialogue sous forme d'un "msgbox". (Le bouton "ajouter" sur mon doc)

Maintenant je voudrai savoir si je peut récupérer cette dernières dans une case sur mon doc Writer ? (la case réponse sur mon document)

A chaque fois que j'ouvre ma boite de dialogue , c'est possible de rajouter mes choix aux fur et à mesures l'un derrières l'autre ? (la case réponse sur mon document)

Merci de vos réponses.

Code : Tout sélectionner


Global oDialog1 As Object 

Sub main 

DialogLibraries.LoadLibrary( "Standard" ) 
'Dialog1 est le nom de la Form (clic-droit sur l'objet / propriétés / onglet Général / Nom)'
oDialog1 = CreateUnoDialog(DialogLibraries.Standard.Dialog1)

LireContenuLigneSelectionnee()

End Sub 

Sub LireContenuLigneSelectionnee 
	Dim j As Integer
	
    oDialog1.Execute()
  
	'Récupère la position de l'élément sélectionné.' 
	j = oDialog1.getControl("ListBox1").getSelectedItemPos() 
 
	'Vérifie si un élément de la ListBox est sélectionné 
	'Renvoie -1 si rien n'est sélectionné. 
	If j = -1 Then Exit Sub    
	  
	MsgBox "Vous avez sélectionné la ligne " & j +1 & " qui contient la donnée: " & _ 
			 oDialog1.getControl("ListBox1").SelectedItem
			 
	findArea() 
			 		  
End Sub

Sub Bouton
    
    ocmdButton = oDialog1.getControl("CommandButton1")

	 With ocmdButton.getModel
	         .Align = 1                'Orientation; 0 = left, 1 = center, 2 = right
	         .FontHeight = 12            'Size
	         .FontName = "FreeSans"        'Font type
	         .ImageURL = ConvertToUrl("/home/mau/bien.jpg")    'Image to show
	         .ImagePosition = 1        'Position 1 = center right
	         .PushButtonType = 1        'Type of btutton 1 = Accept
	 End With

 
	 Select Case ocmdButton.getModel.PushButtonType 
	    Case 1
	    FermetureFormBasic()
	    Case 0 
	    MsgBox "Cancel pressed"
	 End Select
     
End Sub


Sub FermetureFormBasic

    'Ferme la boîte de dialogue 
    oDialog1.endExecute 
      
End Sub


Function findArea() 
	'MsgBox oDialog1.getControl("ListBox1").SelectedItem   
    'Range("A1").Value = oDialog1.getControl("ListBox1").SelectedItem
End Function

Screen1.png
Screen2.png
Screen3.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
libreoffice 6.4.1 et Windows 10
Avatar de l’utilisateur
Oukcha
RespOOnsable modération
RespOOnsable modération
Messages : 4335
Inscription : 06 oct. 2008 08:03

Re: Récupérer les choix d'une zone de liste

Message par Oukcha »

Bonjour,

Je rappelle que cette section n'est pas consacrée aux macros (voir le bandeau rouge en haut de la page). Si vous avez à poursuivre dans cette voie, merci de poster au bon endroit. Ceci dans un but de recherche efficace de l'information dans ce forum.

Si vous postez une solution, faites le en section "Macros et API" et ajoutez dans ce fil un lien vers celle-ci.
                                        
Pour tout savoir sur le fonctionnement de ce forum :arrow: À lire avant tout ! Image
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: Récupérer les choix d'une zone de liste

Message par Dude »

Salut,

Writer reste un traitement de textes et n'est pas destiné à traiter des données.
Ce que tu cherches à concevoir, se fera facilement sous Base avec un formulaire.

Tutoriel sur le sujet : [Base] Sélection d'enregistrement avec une liste déroulante
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: Récupérer les choix d'une zone de liste

Message par Jean-Louis Cadeillan »

Bonjour,
Avant d'envisager les autres solutions, voici une approche basée sur un tableau Calc incorporé comme objet OLE, qui récupère les données d'un tableau Writer par lien DDE. Dans ce tableau Calc, on utilise une formule qui met en forme la réponse en fonction des données, puis Writer récupère cette réponse par lien DDE.
Le détail pour l'exemple :
  • Créer dans Writer un tableau 2x2 avec en première colonne une croix ou non, en deuxième colonne Télé puis Ordinateur.
  • Sauvegarder le document Writer sous son nom définitif
  • Copier la totalité de ce tableau
  • Créer un tableau Calc incorporé par Insertion > Objet > Objet OLE > Classeur LibreOffice
  • Le focus étant sur A1, faire un collage spécial Dynamic Data Exchange (lien DDE)
  • En A6, saisir la formule :

    Code : Tout sélectionner

    =SI(ET(A1="x";A3="");"Vous avez choisi : Télé";SI(ET(A1="";A3="x");"Vous avez choisi : Ordinateur";"Vous avez choisi : Télé et Ordinateur"))
  • Copier cette cellule A6
  • Revenir dans le document Writer et, un peu plus bas que le tableau, faire un collage spécial Dynamic Data Exchange (lien DDE) : Writer crée un tableau d'une cellule, dont on peut enlever la bordure. Dans cette cellule se trouve la phrase résultant du choix.
  • Enlever ou ajouter une croix dans la première colonne du premier tableau Writer
  • Forcer la mise à jour par Ctrl+Maj+F9
  • Le deuxième tableau se met à jour et affiche la phrase attendue.
Cette technique laisse un tableau Calc dans le document Writer mais il suffit de déplacer colonnes et lignes dans la fenêtre de visualisation pour que rien n'apparaisse et, une fois l'objet désactivé, il est possible de le verrouiller ( Propriétés > Options > Protéger la taille, la position et le contenu). Rien ne sera imprimé. À l'écran seule la bordure est visible. On peut aussi réduire sa taille et même le cacher par un logo, par exemple.
Cordialement,
Jean-Louis
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_481) et AOO 4.1.16 (Adoptium 19.0.2.7)
Avatar de l’utilisateur
jeanmimi
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 17219
Inscription : 03 mars 2006 16:02
Localisation : Venise verte

Re: Récupérer les choix d'une zone de liste

Message par jeanmimi »

Bonjour,
Toine-W a écrit :les choix fait dans une zone de liste
Les zones de liste sont des contrôles de formulaires.
Dans un document Texte, il est possible d'insérer des champs Liste de saisie qui pourraient convenir.
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice : Version : 25.8.4 (x64)(23 février 2026)
Adoptium JRE ou Oracle JRE (x64), Windows 10, Thunderbird, Firefox