[Résolu][Calc] Zone de liste dans boîte de dialogue

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
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

[Résolu][Calc] Zone de liste dans boîte de dialogue

Message par Fredox »

Bonjour,
J'aimerais créer une zone de liste à l'intérieur d'une boîte de dialogue, mais je n'y arrive pas.

J'ai bien réussi a en créer une dans un onglet, grâce à la fenêtre "Contrôle" puis "Données", je peu la parametrer facilement, mais dans ma boîte de dialogue, l'onglet "Données" n'existe pas (visiblement).
Comment faire pour définir la cellule liée ? (si c'est possible)
Comment faire pour définir la plage de cellule source ?

Merci encore
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: [Calc] Zone de liste dans boîte de dialogue

Message par Pierre-Yves Samyn »

Bonjour

La grande différence entre dialogues et formulaires est que ces derniers sont prévus pour être liés à une source de données.

Autrement dit, tu dois gérer toi même l'alimentation de ta liste et ce qui adviendra de la sélection.

Les entrées d'une liste sont une variable tableau. Il est possible soit d'ajouter un par un les éléments (méthode AddItem), soit d'ajouter le tableau comme dans l'exemple ci-dessous.

Code : Tout sélectionner

PysDlg.getControl("ListBox1").addItems(array("mardi", "mercredi", "jeudi"), 0)
PysDlg.Execute
thiscomponent.sheets.getByName("Feuille1").getCellRangeByName("A1").string = PysDlg.getControl("ListBox1").SelectedItem
Avatar de l’utilisateur
Fredox
Membre OOrganisé
Membre OOrganisé
Messages : 83
Inscription : 28 oct. 2006 13:55

Re: [Calc] Zone de liste dans boîte de dialogue

Message par Fredox »

Merci,
J'ai jeter un oeil mais je comprend pas grand chose. J'ai creer ma boîte de dialogue avec l'editeur.
J'ai donc ajouter ma ListBox nomé "ListBox1", mais comment utiliser ce que tu vien de me donner ? ou l'ajouter ?
Peux tu m'aider ?

avec l'éditeur j'ai mis dans le champs "entrée de liste" les jours de la semaine, mais comment récupérer l'info dans la cellule A1 ?

Code : Tout sélectionner

Sub Boite()
Dim monDoc as Object, maFeuille as Object
Dim Dlg As Object, bibli As Object, monDialogue As Object

Dim NoSerie as String

   monDoc = ThisComponent
   maFeuille = monDoc.Sheets.getByName("MP")
   DialogLibraries.LoadLibrary("Standard")
   bibli = DialogLibraries.GetByName("Standard")
   monDialogue = bibli.GetByName("Fenetre")
   Dlg = CreateUnoDialog(monDialogue)

'   Dlg.getControl("sNoSerie").text=maFeuille.getCellRangeByName("U5").String
   Dlg.Execute
   NoSerie = Dlg.getControl("sNoSerie").text
   maFeuille.getCellRangeByName("U5").setString(NoSerie)
     
   dlg.close
End Sub
Merci
Open Office 3.3.0 sous Windows 7
Continu de bricoler sous Calc (mais en net progrès)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: [Calc] Zone de liste dans boîte de dialogue

Message par Pierre-Yves Samyn »

Ci-dessous un exemple plus complet... quoique simple :)

Le code montre comment récupérer une plage de cellules (ici A1:A) pour "alimenter" la zone de liste.
Après exécution on "récupère" la sélection de la liste dans la cellule B1

Code : Tout sélectionner

Option Explicit

global Dlg As Object

' Constante égale au nombre d'entrées de la liste
' Ici les données sont en feuille1.A1:A5
' Les lignes sont numérotées à partir de zéro
const NumLig = 4

Sub SaisieNom()

Dim bibli As Object, monDialogue As Object
Dim monDoc as Object, MaFeuille as object, MaCelluleDest as object
dim ExoData(NumLig) as string
dim i as double

monDoc = ThisComponent
MaFeuille = monDoc.sheets.getByName("Feuille1")

'Variable pour la cellule dans laquelle on stockera la sélection
MaCelluleDest = MaFeuille.getCellRangeByName("B1")

DialogLibraries.LoadLibrary("Standard")
bibli = DialogLibraries.GetByName("Standard")
monDialogue = bibli.GetByName("Dialog1")
Dlg = CreateUnoDialog(monDialogue)

'Boucle pour créer une variable "tableau" contenant dans chaque
'élément une entrée de la liste

for i =  0 to NumLig
	ExoData(i) = MaFeuille.getCellByPosition(0, i).formula
next i

'Mise à jour de la liste avec les données lues ci-dessus
'Ecrire ExoData() sans indiquer de nombre entre les parenthèses
'indique à OOo qu'il doit "passer" toute la variable tableau
'et pas un élément en particulier

Dlg.getControl("ListBox1").addItems(ExoData(), 0)
Dlg.Execute

'Modification du texte contenu dans la cellule B1
MaCelluleDest.string = Dlg.getControl("ListBox1").SelectedItem
   
End Sub 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
jremy
NOOuvel adepte
NOOuvel adepte
Messages : 18
Inscription : 15 oct. 2014 06:41

Re: [Calc] Zone de liste dans boîte de dialogue

Message par jremy »

Bonjour

j'essaie d'adapter le tableur calc ci dessus pour mon usage mais je bloque sur une variable non définie alors que je pensais les avoir toutes définies, si quelqu'un peut jeter un œil.
Révision Détendeurs V3.ods
merci

La modération vous a écrit: Ami fossoyeur, merci de ne pas déterrer de fil aussi vieux.

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
UBUNTU 14.04 TLS
LibreOffice Professionnel 5.1.2.2
LibreOffice Perso 5.2.6