Bonjour
Est-il possible d’ouvrir un formulaire directement au lancement de Libre Office ?
Merci
Bonjour @jjber
En préambule je me dois de dire qu’en tant qu’utilisateur de LibreOffice je détesterais cela
(mon usage de LibreOffice ne se limitant pas à l’usage d’une base).
Cela dit, ce n’est pas précisé mais je suppose qu’il s’agit d’un formulaire contenu dans une base de données.
- Si cette hypothèse est bonne et
- Si la base est référencée (
Outils
▸Options
▸Base
▸Base de données
) tu peux associer une macro à l’ouverture de l’application parOutils
▸Personnaliser
▸ongletÉvénements
▸Démarrer l'application
. Il faut naturellement que la macro figure dans la librairieStandard
deMes macros
(ou dans une autre librairie chargée).
Exemple de macro ouvrant un formulaire nommé “biblio” dans la source de données Bibliography (nota: il n’y a aucun formulaire dans cette base de données par défaut ; à créer donc pour test).
option explicit
global oConnexion as object
sub PysOuvrirForm()
dim oForms as object, oForm as object
dim ptFichier(2) as new com.sun.star.beans.PropertyValue
oConnexion = ConnecterSource
oForms = oConnexion.Parent.DataBaseDocument.FormDocuments
ptFichier(0).Name = "ActiveConnection"
ptFichier(0).Value = oConnexion
ptFichier(1).Name = "OpenMode"
ptFichier(1).Value = "open"
oForm = oForms.loadComponentFromURL("biblio", "", 0, ptFichier())
oForm.CurrentController.Frame.ContainerWindow.toFront
end sub
Function ConnecterSource()
Dim sNomSource As String, sLogin As String, sPassword As String
Dim oSource As Object, oDbContext As Object
sNomSource = "Bibliography"
oDbContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oSource = oDbContext.getByName(sNomSource)
sLogin = ""
sPassword = ""
oConnexion = oSource.getConnection(sLogin, sPassword)
if IsNull(oConnexion) then
MsgBox("Connexion impossible", 16)
Stop
end if
ConnecterSource = oConnexion
End Function
Cordialement
Bonjour PYS
je ne suis pas un spécialiste des macros; aussi j’ai récupéré la tienne pour l’incorporer dans ma Base de Données (base de données AGC22.odb).
J’ai changé le nom du formulaire “Menu” à la place de “biblio” et ton sNomSource “Bibliographie” par le Nom de ma base "base de données AGC22’…
Il n’accepte pas le nom de ma base = Erreur
Ci dessous ma macro “Menu”
global oConnexion as object
sub PysOuvrirForm()
dim oForms as object, oForm as object
dim ptFichier(2) as new com.sun.star.beans.PropertyValue
oConnexion = ConnecterSource
oForms = oConnexion.Parent.DataBaseDocument.FormDocuments
ptFichier(0).Name = “ActiveConnection”
ptFichier(0).Value = oConnexion
ptFichier(1).Name = “OpenMode”
ptFichier(1).Value = “open”
oForm = oForms.loadComponentFromURL(“Menu”, “”, 0, ptFichier())
oForm.CurrentController.Frame.ContainerWindow.toFront
end sub
Function ConnecterSource()
Dim sNomSource As String, sLogin As String, sPassword As String
Dim oSource As Object, oDbContext As Object
sNomSource = “base de données AGC22”
oDbContext = CreateUnoService(“com.sun.star.sdb.DatabaseContext”)
oSource = oDbContext.getByName(sNomSource)
sLogin = “”
sPassword = “”
oConnexion = oSource.getConnection(sLogin, sPassword)
if IsNull(oConnexion) then
MsgBox(“Connexion impossible”, 16)
Stop
end if
ConnecterSource = oConnexion
End Function
Par avance je te remercie pour ta sollicitude et ton aide
Cordialement
DUME06
Bonjour Pierre-Yves
Un grand merci pour cette macro … qui marche à la perfection.
Mon appli est utilisée par des utilisateurs lambda qui ne connaissent pas Libre Office et toutes les fonctions (formulaires, requêtes et rapports) sont accessibles via un menu général (boutons) qui s’ouvre maintenant dès le lancement de Libre Office !!!
Cordialement