Hello
jeanmi2403 a écrit : ↑03 mars 2024 23:25
Il faudrait faire un test sur la version du logiciel pour utiliser la bonne fonction selon qu'on est sur Ooo ou LibO.
grâce à la fonction
GetProductName de la bibliothèque
Tools on peut savoir si on est sous LibreOffice ou OpenOffice alors voilà ce que je propose :
1 - on crée une nouvelle fonction
ConvCDate qui selon qu'on est sous LibreOffice ou OpenOffice utilise
CDateToIso ou
CDateToUnoDate
2 - Dans la procédure
AfficherDialogVacances on remplace tous les
CDateToIso par la nouvelle fonction
ConvCDate en ajoutant aussi au début de la procédure le chargement de la bibliothèque
Tools.
Code : Tout sélectionner
Function ConvCDate(x)
If InStr(getProductName,"LibreOffice") then
ConvCDate = CDateToUnoDate(x)
Else
ConvCDate = CDateToIso(x)
end if
End Function
Sub AfficherDialogVacances
GlobalScope.BasicLibraries.LoadLibrary("Tools")
monDocument=thisComponent
lesFeuilles=monDocument.Sheets
maFeuille=lesFeuilles.getByName("Dates")
exitOK=com.sun.star.ui.dialogs.ExecutableDialogResults.OK
'création de la boite de dialogue
DialogLibraries.LoadLibrary("Standard")
bibli = DialogLibraries.getByName("Standard") 'récupère la bibli contenant la boite de dialogue
monDialogue=bibli.getByName("Dialog1")
Dlg = CreateUnoDialog(monDialogue) ' crée le dialogue
'Récupère la zone de vacances stockée dans la cellule B20
dZoneVacances=Dlg.getControl("ZoneVacancesBox")
x=maFeuille.getCellByPosition(1,19).String
dZoneVacances.SelectItem(x,1)
'Récupère la valeur qui indique si les jours fériés doivent être inclus
caseJrFer=Dlg.getControl("CheckBoxJrFer")
ecrireJrFer=maFeuille.getCellByPosition(1,21).String
If ecrireJrFer="oui" then caseJrFer.state=1 else caseJrFer.state=0
'Récupération des dates de la feuille "Dates"
dRentreeBox=Dlg.getControl("DateRentréeBox")
x=maFeuille.getCellByPosition(2,1).value
dRentreeBox.date=(ConvCDate(x))
labelJourRentree=Dlg.getControl("JourRentrée")
labelJourRentree.text=JourSem(x) 'Indique le jour de la semaine
dToussaint1Box=Dlg.getControl("DateToussaint1Box")
x=maFeuille.getCellByPosition(2,2).value
x=DateAdd("d",-1,x) 'Enlève un jour pour avoir la date de départ en vacances
dToussaint1Box.date=(ConvCDate(x))
labelJourToussaint1=Dlg.getControl("JourToussaint1")
labelJourToussaint1.text=JourSem(x) 'Indique le jour de la semaine
dToussaint2Box=Dlg.getControl("DateToussaint2Box")
x=maFeuille.getCellByPosition(3,2).value
'x=DateAdd("d",1,x) 'Rajoute un jour pour avoir la date de reprise des cours
dToussaint2Box.date=(ConvCDate(x))
labelJourToussaint2=Dlg.getControl("JourToussaint2")
labelJourToussaint2.text=JourSem(x) 'Indique le jour de la semaine
dNoel1Box=Dlg.getControl("DateNoel1Box")
x=maFeuille.getCellByPosition(2,3).value
x=DateAdd("d",-1,x) 'Enlève un jour pour avoir le premier jour de vacances
dNoel1Box.date=(ConvCDate(x))
labelJourNoel1=Dlg.getControl("JourNoel1")
labelJourNoel1.text=JourSem(x) 'Indique le jour de la semaine
dNoel2Box=Dlg.getControl("DateNoel2Box")
x=maFeuille.getCellByPosition(3,3).value
'x=DateAdd("d",1,x) 'Rajoute un jour pour avoir la date de reprise des cours
dNoel2Box.date=(ConvCDate(x))
labelJourNoel2=Dlg.getControl("JourNoel2")
labelJourNoel2.text=JourSem(x) 'Indique le jour de la semaine
dHiver1Box=Dlg.getControl("DateHiver1Box")
x=maFeuille.getCellByPosition(2,4).value
x=DateAdd("d",-1,x) 'Enlève un jour pour avoir le premier jour de vacances
dHiver1Box.date=(ConvCDate(x))
labelJourHiver1=Dlg.getControl("JourHiver1")
labelJourHiver1.text=JourSem(x) 'Indique le jour de la semaine
dHiver2Box=Dlg.getControl("DateHiver2Box")
x=maFeuille.getCellByPosition(3,4).value
'x=DateAdd("d",1,x) 'Rajoute un jour pour avoir la date de reprise des cours
dHiver2Box.date=(ConvCDate(x))
labelJourHiver2=Dlg.getControl("JourHiver2")
labelJourHiver2.text=JourSem(x) 'Indique le jour de la semaine
dPaques1Box=Dlg.getControl("DatePaques1Box")
x=maFeuille.getCellByPosition(2,5).value
x=DateAdd("d",-1,x) 'Enlève un jour pour avoir le premier jour de vacances
dPaques1Box.date=(ConvCDate(x))
labelJourPaques1=Dlg.getControl("JourPaques1")
labelJourPaques1.text=JourSem(x) 'Indique le jour de la semaine
dPaques2Box=Dlg.getControl("DatePaques2Box")
x=maFeuille.getCellByPosition(3,5).value
'x=DateAdd("d",1,x) 'Rajoute un jour pour avoir la date de reprise des cours
dPaques2Box.date=(ConvCDate(x))
labelJourPaques2=Dlg.getControl("JourPaques2")
labelJourPaques2.text=JourSem(x) 'Indique le jour de la semaine
dGVacBox=Dlg.getControl("DateGVacBox")
x=maFeuille.getCellByPosition(2,6).value
x=DateAdd("d",-1,x) 'Enlève un jour pour avoir le premier jour de vacances
dGVacBox.date=(ConvCDate(x))
labelJourGVac=Dlg.getControl("JourGVac")
labelJourGVac.text=JourSem(x) 'Indique le jour de la semaine
'Rajoute les jours de la semaine correspondant aux dates
'Exécution et traitement de la boite de dialogue pour insérer les données dans la feuille "Dates"
If Dlg.Execute=exitOK then
'rajoute ou enlève 1 jour pour obtenir le premier jour ou le dernier jour de vacances
'car le calendrier scolaire est donné selon la date de départ en vacances et la date de rentrée
maFeuille.getCellByPosition(2,1).value=CDateFromIso(dRentreeBox.date)
maFeuille.getCellByPosition(2,2).value=CDateFromIso(dToussaint1Box.date)+1
maFeuille.getCellByPosition(3,2).value=CDateFromIso(dToussaint2Box.date)
maFeuille.getCellByPosition(2,3).value=CDateFromIso(dNoel1Box.date)+1
maFeuille.getCellByPosition(3,3).value=CDateFromIso(dNoel2Box.date)
maFeuille.getCellByPosition(2,4).value=CDateFromIso(dHiver1Box.date)+1
maFeuille.getCellByPosition(3,4).value=CDateFromIso(dHiver2Box.date)
maFeuille.getCellByPosition(2,5).value=CDateFromIso(dPaques1Box.date)+1
maFeuille.getCellByPosition(3,5).value=CDateFromIso(dPaques2Box.date)
maFeuille.getCellByPosition(2,6).value=CDateFromIso(dGVacBox.date)+1
maFeuille.getCellByPosition(1,19).String=dZoneVacances.SelectedItem
ecrireJrFer=maFeuille.getCellByPosition(1,21).String
If caseJrFer.state=1 then maFeuille.getCellByPosition(1,21).String="oui"
If caseJrFer.state=0 then maFeuille.getCellByPosition(1,21).String="non"
End If
Dlg.Dispose
End Sub
bertrandperrier a écrit : ↑01 mars 2024 20:06
c'est pour le coller dans mon programme en python, qui converti les info en .ics
Dans OpenOffice et LibreOffice on peut écrire des macros en python en utilisant directement les données des feuilles calc. Alors ce genre de manipulation peut être remplacé par une macro en python intégrée au classeur.
Ami calmant, J.P