Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum 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 !
Une listbox est un contrôle qui s'insère sur l'objet DrawPrage du document.
On l'emploie dans un formulaire.
Donc, je ne comprends pas ce que tu cherches à faire.
Aurélien73 a écrit : mais je sèche sur la liste de saisie
Alors pourquoi parler de listbox dans ton titre ?
Un titre clair permet de faciliter les recherches.
Aurélien73 a écrit :Voir mon exemple en pièce jointe.
Ton exemple n'est pas très parlant.
L'insertion doit se faire à quel endroit dans le document ?
Que doit contenir la liste ?
D'où vont venir les données ?
Pour l'insertion, je veux qu'en appuyant sur le bouton correspondant "Insérer Champ" ou "Insérer liste" cela l'insère à l'endroit indiqué quand on positionne le curseur dans la deuxième colonne
"Positionnez le curseur dans la colonne à droite et cliquez sur le bouton pour insérer le champ correspondant"
Le bouton / macro "Insérer Champ" fonctionne. Cela insère bien le Champ dont la valeur est Test.
En revanche je n'arrive pas insérer la liste de saisie de la même façon à ce même endroit.
En espérant avoir été plus clair.
J'ai changé dans le titre listbox par liste de saisie.
Aurélien73 a écrit :Ce que je souhaite est insérer une liste de saisie déjà existante comme dans mon modèle dont le nom est MaListe
Tu ne peux pas insérer une liste déjà existante puisqu'elle est déjà insérée
a) soit tu cherches à la déplacer
b) soit tu cherches à la cloner et l'insérer à la position du curseur dans une cellule du tableau.
Merci de préciser les points a ou b
@+
REM ***** BASIC *****
Option Explicit
Private oItems() As Variant
Private oSelectedItem As String
Private oDoc As Object
Const oTextfieldName = "MaListe" 'ATTENTION sensible à la CaSSe
Sub RecupChamp
Dim lesChamps As Object
Dim unChamp As Object
oDoc = thiscomponent
lesChamps = oDoc.TextFields.createEnumeration
Do While lesChamps.hasMoreElements
unChamp = lesChamps.NextElement
'xray unChamp
if unChamp.supportsService("com.sun.star.text.textfield.DropDown") then
if unChamp.Name = oTextfieldName Then
'xray unChamp
oItems() = unChamp.Items
oSelectedItem = unChamp.SelectedItem
end if
end if
loop
End Sub
Sub InsertChamp 'Connecter le bouton ici
Dim oChamp As Object
Dim curseurVisible As Object
Dim monTexte As Object
Dim monCurseur As Object
RecupChamp
'Dolev and Aurélien73 Inside
'https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=63799&p=349235#p349172
oChamp = oDoc.createInstance("com.sun.star.text.textfield.DropDown")
With oChamp
.Name = oTextfieldName
.Items = oItems()
.SelectedItem = oSelectedItem
End with
curseurVisible = oDoc.CurrentController.ViewCursor
if curseurVisible.Text.ImplementationName = "SwXCell" Then
monTexte = CurseurVisible.Text
monCurseur = monTexte.createTextCursor
moncurseur.gotoRange(CurseurVisible.End,False)
monTexte.insertTextContent(monCurseur, oChamp, False)
end If
end sub
@+ Dolev te donnait la solution qu'il fallait inclure à ton propre code. Et pour récupérer le contenu de ton champ liste tu pouvais t'inspirer du code que te donnait Jurassic Pork dans ton précédent fil
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Du coup ton titre ne reflète pas réellement le contenu du sujet. J'opterai plutôt pour : Cloner un champ liste existant
car il s'agit bien de récupérer tout le contenu d'un champ liste existant pour le recréer ailleurs.
@+