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 à [email protected] 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