Lien avec un fichier

Bonjour,
jusqu’à présent j’utilisais Libre Office avec un PC sous Windows 7… Je viens de migrer ce dernier sous Linux mint 7. Depuis les macros que j’avais créées dans Base ont disparue!


J’avais créé une macro nommée SubHyperlien. Elle permettait d’ouvrir un fichier à partir de son path quelle que soit son extension :

Ex : C:\Users\AnnieGabriel\Documents\Mes documents\Gabriel\Recettes\Pdf\ORONGES ou amanite des césars _ Recette de ORONGES ou amanite des césars - Marmiton.pdf

ou

home/gabriel/Bureau/Mes Documents/Adventi/Chants/Répertoire/Harmony/Hymn to the Virgin.myr

Auriez-vous un exemple de macro sous Linux qui permettrait de faire cela sachant que le Ctrl K (Hyperlien) n’existe pas dans Base.

Merci d’avance pour votre aide.

Bonjour.

Sub Main
	path = "/home/crdf/Downloads/Le_Fichier.pdf"
	Shell("xdg-open " & path, 1)
End Sub

Comment initialiser path avec le champ Adresse de l’écran ci-dessus?

E.g. Adresse > Ctrl Click

Option Explicit
Sub OpenFile(Evt As Object)
	On Error GoTo Erro
	If Evt.Modifiers = 2 Then print Evt.Source.Text
	Exit Sub
	Erro: MsgBox "ERRO " & Err & Chr(10) & "na linha " & Erl
End Sub

 

Dim path As String
If Evt.Modifiers = 2 Then 
    path = Evt.Source.Text
    [...]

GetPath

J’ai créé une macro avec la ligne suivante : oForm = ThisComponent.DrawPage.Forms.getByName(“SubForm_Recettes”) mais j’ai toujours le message suivant :
image

Pas besoin de ça.
SubForm_Recettes > grille (TableControl) >
colonne Adresse >
Event = Relâchement du bouton de la souris.
 
Usage :
cliquez à Adresse
Ctrl - click
 
Veuillez noter que devez adapter au format de chemin Linux.

Pouvez-vous être plus explicite? Voici le texte de macro :

Sub OuvrirFichierDepuisAdresse
Dim oForm As Object
Dim oField As Object
Dim sChemin As String
Dim oDesktop As Object
Dim oURL As String

'--- 1. Récupérer le formulaire actif nommé "SubForm_Recettes"
oForm = ThisComponent.DrawPage.Forms.getByName("SubForm_Recettes")
If IsNull(oForm) Then
    MsgBox "Formulaire ""SubForm_Recettes"" introuvable.", 48, "Erreur"
    Exit Sub
End If

'--- 2. Lire la valeur du champ "Adresse"
On Error GoTo ChampInexistant
oField = oForm.getByName("Adresse")
sChemin = Trim(oField.Text)          'ou .Value selon le type du champ
If sChemin = "" Then
    MsgBox "Le champ ""Adresse"" est vide.", 48, "Erreur"
    Exit Sub
End If

'--- 3. Vérifier que le fichier existe
If Not FileExists(sChemin) Then
    MsgBox "Fichier non trouvé : " & sChemin, 48, "Erreur"
    Exit Sub
End If

'--- 4. Ouvrir le fichier avec l'application par défaut (Linux)
oDesktop = createUnoService("com.sun.star.frame.Desktop")
' Convertir le chemin système en URL (file:///)
oURL = ConvertToURL(sChemin)
oDesktop.loadComponentFromURL(oURL, "_blank", 0, Array())
Exit Sub

ChampInexistant:
MsgBox “Le champ ““Adresse”” est introuvable dans le formulaire.”, 48, “Erreur”
End Sub

'=================================================================
’ Fonction utilitaire : test d’existence d’un fichier
'=================================================================
Function FileExists(sPath As String) As Boolean
Dim oSimpleFileAccess As Object
oSimpleFileAccess = createUnoService(“com.sun.star.ucb.SimpleFileAccess”)
FileExists = oSimpleFileAccess.Exists(sPath)
End Function

J’ai affecté la macro à l’événement Bouton de la souris relâché :
2026-02-27_18-45
et j’ai toujours le même message

Option Explicit
Sub OuvrirFichierDepuisAdresse(Evt As Object)
    If Evt.Modifiers = 2 Then ' 2 = Ctrl
        Dim sChemin As String
        On Error GoTo Erro
        REM Lire la valeur du champ "Adresse":
        sChemin = Evt.Source.Text
        MsgBox "Le champ Adresse est " & Chr(10) & oChemin
        REM Ouvrir le fichier avec l'application par défaut (Linux):
        Shell("xdg-open " & sChemin, 1)
        Exit Sub
        Erro: MsgBox "Erreur " & Err & Chr(10) & "à ligne " & Erl
    End If
End Sub

:+1:

  • cliquez à Adresse
  • Ctrl - click
    OuvrirFichier

Je dois avoir un problème sur mon PC car j’ai créé la macro avec votre texte puis j’ai associé la macro à l’événement Bouton de souris relaché de Adresse puis j’ai cliqué sur la première ligne d’Adresse et rien ne se passe!
J’ai alors ajouté un message sur Evt.Modifiers :


Il est égal à zéro au lieu de 2!

J’ai réessayé avec Ctl+Clic, et là Evt.Modifiers = 2, mais il n’y a rien dans Adresse :

Veuillez upload une capture d’écran de votre script.

Désolé : ma faute !
sChemin (String) :grimacing:
Et TOUJOURS placez la clause Option Explicit !
 
Aussi, vérifiez la chaîne de chemin (Adresse) dans le terminal:
~$ xdg-open < adresse >

Avez-vous corrigé le oChemin et recompilé le script ?

Que dois-je mettre ?
image

sChemin(Evt.Source.Text) ?

Je suis aperçu que dans le MsgBox, ily avait oChemin au lieu de sChemin. J’ai modifié et j’ai bien le contenu :


mais toujours pas d’ouverture de fichier. Ne serait-ce pas dû aux accents dans le nom du fichier?

Cela marche dans le terminal :

Cela marche aussi avec des accentués :

On y est presque :slight_smile:

Ou les espaces (?)
:thinking:
S’agit-il d’une BD embarquée ?
Si oui, vous pourriez téléverser-la (uoload), et je la remplirais avec mes données…