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 !
Bonjour à tous
Dans la base de données ci-jointe, j'ai un formulaire qui me servira à gérer ma table PROPRIETAIRES
J'ai ajouté à ce formulaire une Listbox en lien avec une requète qui comprend l'ID, et la concaténation du NOM/PRENOM
Lors du choix d'un propriétaire dans la listbox, j'ai un MsgBox qui m'affiche effectivement le Nom et Prenom après exécution de la macro suivante:
Sub AllerAuProprietaire(oEv as object)
Dim oDoc As Object
Dim oForm As Object
Dim oListbox As Object
Dim valeur as string
Dim Choix as integer
oDoc = ThisComponent
oForm = oEv.Source.Model.Parent
'oForm = oDoc.DrawPage.Forms(0)
oListbox = oForm.getByName("LB_RECHERCHE")
valeur = oListbox.CurrentValue
MsgBox valeur
End Sub
Mais ce que j'aimerais c'est récupérer l'ID (clé) pour pouvoir raffraichir mon formulaire avec le nom choisi dans la listbox
Merci pour votre aide
Patrick
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 23 févr. 2026 09:34, modifié 1 fois.
Ajout de la balise [Base] comme c'est demandé dans les règles de cette section (Bandeau rouge en haut de page).
Balisage du code pour faciliter la lecture et la présentation.
À savoir pour la prochaine fois.
Touche Ctrl de Windows = touche cmd⌘ sur Mac OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Merci pour votre réponse.
J'aurais voulu éviter un sous-formulaire car je suis sur une seule table.
N'y a-t-il pas moyen de récupérer l'ID de ma requête (attachée à ma listbox) et non le nom affiché après ma sélection de la listbox ?
J'ai essayé avec SelectedItems(0) , SelectedItems(1) , CurrentValue mais cela ne fonctionne pas.
J'ai juste besoin de l'ID (unique) qui me donnera l'enregistrement précis recherché.
Merci
Patrick
superpat a écrit : ↑23 févr. 2026 11:05
J'aurais voulu éviter un sous-formulaire car je suis sur une seule table.
Il n'y a aucun rapport entre formulaire et table.
Il s'agit de stocker l'information pour qu'elle soit récupérable.
Tu as lu le tuto ? C'est le 1er exemple donné et cela fonctionne en plus sans macro.
Ceci va afficher l'identifiant ID issu de ta table
Sub AllerAuProprietaire(oEv as object)
oSource = oEv.Source
With oSource
nPos = .getSelectedItemPos()
oListe = .getModel()
End with
msgbox oListe.ValueItemList(nPos)
End Sub
Re bonjour,
J'ai essayé le code ci-dessus et j'obtiens une erreur
Après de multiples recherches sur ChatGPT, Copilot, Perplexity, le seul code que donne le résultat voulu est le suivant :
Sub AllerAuProprietaire
Dim oDoc As Object
Dim oForm As Object
Dim oControl As Object
Dim sNom As String
Dim oConn As Object
Dim oStmt As Object
Dim oResult As Object
Dim sSQL As String
Dim idSelectionne As Long
oDoc = ThisComponent
oForm = oDoc.DrawPage.Forms.getByName("Formulaire")
oControl = oDoc.CurrentController.getControl(oForm.getByName("LB_CLI"))
' Récupère le NOM affiché
sNom = oControl.getSelectedItem()
MsgBox sNom
' Connexion à la base
oConn = oForm.ActiveConnection
oStmt = oConn.createStatement()
' Requête SQL
sSQL = "SELECT ""ID"" FROM ""PROPRIETAIRES"" WHERE ""NOM"" = '" & sNom & "'"
oResult = oStmt.executeQuery(sSQL)
If oResult.next Then
idSelectionne = oResult.getLong(1)
MsgBox "ID sélectionné = " & idSelectionne
Else
MsgBox "ID non trouvé"
End If
End Sub
Je trouve cette solution vraiment très complexe !!
N'y a-t-il pas plus simple ?
Patrick
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par micmac le 28 févr. 2026 20:11, modifié 1 fois.
Raison :Code balisé par la modération. Pensez-y.