Re,
Le 08/05/2017 à 17:18, dvd69 a écrit :
RetourDate = oPDialog.getControl("DateField1").getDate
'
' ...
'
' Informations (simplistes !)
MsgBox("Nom:" & Nom & " - Prénom:" & Prenom & Chr(13) & "Catégorie:"
& NomCategorie & Chr(13) & "Date validité:" & RetourDate )
a la fin de l'execution de la macro, j'ai l'erreur:
"Erreur d'exécution BASIC.
Valeur de propriété incorrecte."
si j'efface:
"Date validité:" & RetourDate
et execute de nouveau la macro, il n'y a plus de pb. RetourDate attend-il
qlq chose d'equivalent a Chr, mais quoi? est ce en relation avec l'evolution
de Calc exprimee ici
precedent post
<http://nabble.documentfoundation.org/resolu-macro-sous-calc-erreur-que-je-ne-comprends-pas-CDateToIso-td4214058.html>
ben oui :,(
Comme indiqué dans l'autre fil, les contrôles DateField utilisent des
structures com.sun.star.util.Date depuis LO v.4.1.1 (voir les notes de
version citées plus bas).
DateField.getDate retourne donc une structure com.sun.star.util.Date. Du
coup, l'instruction
"Date validité:" & RetourDate
ne fonctionne pas puisque RetourDate ne contient pas une chaîne mais une
structure qui ne peut pas être interprétée automatiquement en chaîne
(voir la remarque plus bas).
-> Il faut convertir explicitement la structure de type
com.sun.star.util.Date en chaîne. La fonction CDateFromUnoDate() est là
pour ça (voir l'aide).
À propos de ces questions de dates, je vous conseille de lire :
https://wiki.documentfoundation.org/ReleaseNotes/4.1/fr#Changements_dans_l.27API
où ceci est précisé :
-8< ---------------------------------------------------
À partir de 4.1.1 core commit 43ea97e1f9cecd6c7cba8db35ce1307c858c6857:
-- service com.sun.star.awt.UnoControlDateFieldModel: propriétés Date,
DateMin and DateMax changées en type com.sun.star.util.Date au lieu de
long (integer).
-8< ---------------------------------------------------
Remarque : RetourDate n' "attend" rien.
Comme cette variable n'est pas déclarée dans le sous-programme,
LibreOffice Basic la considère comme de type Variant (type fourre-tout).
C'est l'affectation
RetourDate = oPDialog.getControl("DateField1").getDate
qui lui donne son type réel lors de l'exécution (com.sun.star.util.Date).
Inversement, si RetourDate avait été déclarée comme String, c'est alors
l'instruction
RetourDate = oPDialog.getControl("DateField1").getDate
qui aurait généré l'erreur.
Pour éviter tout problème de ce... type... je conseillerais donc :
1. De (toujours !) déclarer les variables.
Dim RetourDate As String
(avec l'option
Option Explicit
en tout début de module, on assure que le programme vérifiera que toutes
les variables existent)
2. De transtyper
RetourDate = CDateFromUnoDate(oPDialog.getControl("DateField1").getDate)
Ce qui donnera le fonctionnement attendu.
Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être
supprimés
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.