[Résolu][Base]Test d'erreur lors d'appel de fichier externe

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 !

[Résolu][Base]Test d'erreur lors d'appel de fichier externe

Messagepar ooSikas » 11 Nov 2019 11:16


La modération a écrit:Titre modifié pour plus de clarté.

Bonjour

Mon programme a été rédigé sous Calc, mais le problème que je rencontre s'applique à n'importe quel logiciel de la suite, j'ai donc mis Base en objet. N’hésitez pas à me corriger si je me trompe.

A l'intérieur d'une macro, je demande l'ouverture d'un fichier .ott se situant dans le même dossier que le fichier de travail.

Code : Tout sélectionner   AgrandirRéduire
 
Dim oWriter As Object
Dim sAdresseDoc As String
Dim propFich() As New com.sun.star.beans.PropertyValue
sAdresseDoc = ConvertToURL(getDirectory(oCalc.URL) & "MODELE_DEVIS.ott")
oWriter = StarDesktop.loadComponentFromURL(sAdresseDoc, "_blank", 0, propFich() )


Insipiré du code de wiki OppenOffice :
Code : Tout sélectionner   AgrandirRéduire
Dim Doc As Object
Dim Url As String
Dim Dummy() 'It is an (empty) array of PropertyValues
Url = "file:///C:/test.odt"
Doc = StarDesktop.loadComponentFromURL(Url, "_blank", 0, Dummy)


Tout fonctionne bien, sauf quand l'utilisateur oublie de mettre le fichier .ott dans le même dossier.

J'aimerai ajouter une vérification de l'erreur type "DetectionFailed' avant d'utiliser le
Code : Tout sélectionner   AgrandirRéduire
StarDesktop.loadComponentFromURL.

Ainsi je pourrait faire apparaître une boite de dialogue expliquant que le fichier .ott est introuvable et quitter la macro avant qu'elle se mette en erreur.
Je ne sais pas comment m'y prendre pour faire le test de l'erreur. Avez vous des idées?

Merci d'avance
Dernière édition par ooSikas le 11 Nov 2019 12:47, édité 2 fois.
LibreOffice Version: 5.4.7.2 sous Windows 10
ooSikas
Membre lOOyal
Membre lOOyal
 
Message(s) : 38
Inscrit le : 22 Juil 2017 09:33

Re: [Base]Tester les erreur lors de l'appel d'un fichier ext

Messagepar luky-luke » 11 Nov 2019 12:12

Bonjour
Code : Tout sélectionner   AgrandirRéduire
sAdresseDoc = ConvertToURL(getDirectory(oCalc.URL) & "MODELE_DEVIS.ott")
If not FileExists(sAdresseDoc) Then
MsgBox("Le document n'existe pas")

Cordialement
Luke
AOO 4.1.3 et LibO 5.3.7.2 Ubuntu 16.04 LTS et Debian 9
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 914
Inscrit le : 27 Nov 2010 01:17
Localisation : gâtine deux-sèvrienne

Re: [Base]Tester les erreur lors de l'appel d'un fichier ext

Messagepar Dude » 11 Nov 2019 12:18

Salut,

ooSikas a écrit:sauf quand l'utilisateur oublie de mettre le fichier .ott dans le même dossier.

Et pourquoi ta macro ne fait pas cette opération ?
Regarde du côté de FileCopy dans l'aide F1 ou le Wiki
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 21118
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Base]Test d'erreur lors d'appel de fichier externe

Messagepar ooSikas » 11 Nov 2019 12:46

Bonjour

Luky-luke : merci c'est exactement ce qu'il me fallait, la fonction FileExists :D :D Je passe le sujet en résolu

Dude : Il s'agit d'un fichier Calc de création de prix. Je viens mettre en forme un devis (en ouvrant un modèle Writer) en y intégrant automatiquement les prix calculés dans Calc.
Pour trouver l'url du fichier Writer, je prend l'adresse du fichier Calc et je remplace le nom du fichier et l'extension. Par conséquent si le modèle Writer n'est pas rangé au bon endroit, la macro ne trouve pas le fichier et plante.


Merci pour vos réponses et votre aide !
LibreOffice Version: 5.4.7.2 sous Windows 10
ooSikas
Membre lOOyal
Membre lOOyal
 
Message(s) : 38
Inscrit le : 22 Juil 2017 09:33


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 5 invité(s)