[Résolu][Calc] Différence de comportement des dates.

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 !
stefalci
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 17 déc. 2007 18:23
Localisation : Fontaine les dijon

[Résolu][Calc] Différence de comportement des dates.

Message par stefalci »

Bonjour à Toutes et Tous,

Je reviens vers vous pour vous soumettre un test de comportement car je ne sais plus dans quelle direction chercher.
Après de nombreux essais, j'ai repris un exemple simplifié du livre de Bernard et Laurent et je constate la même différence.
Je collecte par macro, différentes dates dans des boites de dialogue.
Sur WXP et en LO 3.6 tout fonctionne comme je le souhaite.
Sur W7-64 en LO 4.5 j'obtiens systématiquement une erreur sur l’exécution de la commande de récupération de la date dans le champ.
J'ai donc réduit au maximum l'appli et vous propose l'essai pour me confirmer sur d'autres environnements ce changement de comportement

Ci joint une petite macro de test et le message d'erreur sur la deuxième feuille du classeur.

Merci
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par stefalci le 05 juin 2014 08:59, modifié 3 fois.
LibreOffice 25.2 sous Ubuntu 22.04 LTS
LibreOffice Version: 25.2.5.2 sous W7 64b SP1
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Différence de comportement des dates.

Message par Dude »

stefalci
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 17 déc. 2007 18:23
Localisation : Fontaine les dijon

Re: [Calc] Différence de comportement des dates.

Message par stefalci »

Merci de ce guidage Dude, j'avais lu ce post mais je ne vois pas comment faire pour récupérer la date en entier
et au format (jj/MMMM/AAAA).
Les seuls résultats que j'obtienne sont les arguments séparés JJ, MM, AAAA
Existe t il d'autres pistes pour capturer la date formatée d'un controle. J'ai un peu d'expérience en basic mais je
ne maitrise pas toutes les subtilités et dans le cas présent Xray ne m'apporte pas de solution, ou du moins j'en ai
pas trouvée.

Merci de la piste
LibreOffice 25.2 sous Ubuntu 22.04 LTS
LibreOffice Version: 25.2.5.2 sous W7 64b SP1
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc] Différence de comportement des dates.

Message par Churay »

stefalci a écrit :../.. au format (jj/MMMM/AAAA).
Les seuls résultats que j'obtienne sont les arguments séparés JJ, MM, AAAA

Code : Tout sélectionner

sDate = sVarJJ & "/" & sVarMMMM & "/" & sVarAAAA
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
stefalci
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 17 déc. 2007 18:23
Localisation : Fontaine les dijon

Re: [Calc] Différence de comportement des dates.

Message par stefalci »

Merci Churray, mais ca je sais faire et ne correspond pas à mon besoin.

Dans un dialogue, je récupère une date avec un contrôle date déroulant.
Jusqu'à maintenant je savais gérer avec CDateFromISO pour ma macro en LO 3.6
Avec LO 4.1.5 ca ne fonctionne plus, confirmé par les infos de Dude.
Comment je fais maintenant, pour traiter cette date avec les différents formats
dont j'ai besoin.

Désolé d'insister, mais l'exemple donné dans : https://forum.openoffice.org/fr/forum/v ... =8&t=41236
ne m'a pas été très utile car certains éléments me sont incompréhensibles. Je suis juste un débutant averti.

Merci de votre patience
LibreOffice 25.2 sous Ubuntu 22.04 LTS
LibreOffice Version: 25.2.5.2 sous W7 64b SP1
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Différence de comportement des dates.

Message par luky-luke »

Bonjour

La propriété Date du champs DateField Avec LibO 4.xxx n'est pas au format ISO. Donc Le CDateFromISO provoque une erreur.
stefalci a écrit :Les seuls résultats que j'obtienne sont les arguments séparés JJ, MM, AAAA
Il te suffit d'assembler ces éléments :

Code : Tout sélectionner

Sub demanderDate()
Dim dlg As Object
Dim champDate As Variant, dateISO as Variant, laDate As Date
Dim a As Integer, m As Integer, j As Integer
Dim Jour As Long, Mois As Long, Annee As Long
dlg = CreerDialogue("Standard", "Dialog1")
if dlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
	champDate = dlg.getControl("DateField1")
	dateISO = champDate.Date
		if IsNumeric(dateISO) Then
  			laDate = CDateFromISO(dateISO)
  		Else 'pour LibO 4.xxx
  			Jour = dateISO.Day
  			Mois = dateISO.Month
  			Annee = dateISO.Year
  			laDate = Jour & "/" & Mois & "/" & Annee
		End if
  print laDate
end if
dlg.dispose
End Sub
Le contrôle au format numérique va permettre au code de fonctionner indifféremment avec AOO ou LibO. C'est un peu lourd, mais cela à le mérite de fonctionner...... J'espère :lol:

Cordialement
Luke
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

Re: [Calc] Différence de comportement des dates.

Message par Piaf »

Bonjour
Pas forcement tout compris.
stefalci a écrit :je ne vois pas comment faire pour récupérer la date en entier
et au format (jj/MMMM/AAAA).
A tester donc sous les dernières versions de LibO.

Code : Tout sélectionner

Sub OuvrirDialog	
Dim bibli As Object, monDialogue As Object, oDlg as Object
	DialogLibraries.LoadLibrary("Standard")
	bibli = DialogLibraries.GetByName("Standard")
	monDialogue = bibli.GetByName("Dialog1")
	oDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
	oDlg.Execute
End Sub

Sub AfficherDate(oEV As Object)
Dim dlg As Object
Dim monCtrl As Object, MaDate As Object
	dlg = oEv.Source.Context
	monCtrl = dlg.getControl("DateField1")
	MaDate = monCtrl.Date
	MsgBox("La date formatée : " & Format(CDateFromUnoDate(MaDate),"dd/mmmm/yyyy"))
End Sub
A+
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 957
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Différence de comportement des dates.

Message par luky-luke »

Bonsoir

Pour compléter la réponse et avoir un code qui fonctionne avec LibO et AOO version 3.xxx ou 4.xxx, avec la date au format que l'on souhaite (merci Piaf pour la piqûre de rappel) :wink:

Code : Tout sélectionner

Option Explicit

Sub FormatDate
Dim oNDlg As Object
Dim champDate As Object, Madate as Variant, laDate As Date
Dim Jour As Long, Mois As Long, Annee As Long
oNDlg = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
if oNDlg.execute = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
	champDate = oNDlg.getControl("DateField1")
	Madate = champDate.Date
		if IsNumeric(Madate) Then
  			laDate = CDateFromISO(Madate)
  		Else
  			Jour = Madate.Day
  			Mois = Madate.Month
  			Annee = Madate.Year
  			laDate = Jour & "/" & Mois & "/" & Annee
		End if
	print Format(laDate,"dd/mmmm/yyyy")
	print Format(laDate,"dddd dd mmmm yyyy")  
end if
oNDlg.dispose
End Sub
Cordialement
Luke
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibO 7.4.7.2 Raspberry pi (Trixie) et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 26195
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Différence de comportement des dates.

Message par Dude »

Rappelons quand même que CDateFromISO a un comportement aléatoire qui peut retourner une erreur si présence de séparateur.
Voir ticket 109652
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc] Différence de comportement des dates.

Message par Churay »

Yeap

Ce qui me rappelle
Churay, le 18 Juil 2012 19:48, a écrit :Bonsoir

Personnellement, ce qui me gêne :
- le rythme soutenu des sorties de LO même si j'en comprends la démarche. Pour des raisons de cuisine interne, je n'ai pas opté pour la solution la plus simple des mises-à jour.
- à chaque mise à jour, les surprises inévitables
- la divergence des API : pour coder une macro même simple, il faudra tôt ou tard commencer à déterminer où on a atteri et prévoir le code en conséquence si on veut qu'elle passe un peu partout (ou prévoir de dire qu'elle fonctionne pas nécessairement sur telle ou telle suite : original isn't..)
- l'éventuelle nouvelle interface héritée de Symphony qui ne me plait pas
A l'époque je pensais tester si on est sous AOO | LO...
Dans les deux cas, il faut (depuis quelques temps), pousser la plaisanterie jusqu'au test de la version... et coder en conséquence... :marto:
On se fait à tout...
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
stefalci
Membre OOrganisé
Membre OOrganisé
Messages : 70
Inscription : 17 déc. 2007 18:23
Localisation : Fontaine les dijon

Re: [Résolu][Calc] Différence de comportement des dates.

Message par stefalci »

Tout d'abord merci à Dude, Churay, Piaf et luky-luke de leur réactivité.

Je vais tester dans la journée. Je garderai tout de même le test de version par rapport aux remarques de Dude sur
le CDateFromISO. Et si problème, j'en ai déjà la cause et la solution.

Je confirme ça marche à merveille, et en plus je peux l'utiliser qq soit la version de LO.

Encore merci aux contributeurs

Cordialement
LibreOffice 25.2 sous Ubuntu 22.04 LTS
LibreOffice Version: 25.2.5.2 sous W7 64b SP1