[Résolu][Calc]Selecteur de Date par Double-clic

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 !
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2791
Inscription : 16 avr. 2010 13:31

[Résolu][Calc]Selecteur de Date par Double-clic

Message par OOotremer971 »

Bonjour,

Pour faire suite à ce fil ouvert en section tableur : Selecteur de date (Date picker), une solution par macro dans le fichier joint.

Effectuer un double-clic dans une cellule préalablement formatée au format date puis sélectionner une date dans le dialogue. La date sera écrite dans la cellule.

Code : Tout sélectionner

Option Explicit

Dim dlg As Object, cel As Object

Sub main(oevt As Object)
Dim  bibli As Object, oDlg As Object
cel = oevt
DialogLibraries.loadLibrary("Standard")
oDlg = DialogLibraries.getByName("Standard").getByName("Dialog1")
dlg = CreateUnoDialog(oDlg)
dlg.execute
End Sub

Sub dater(oevt As Object)
Dim laDate As String
laDate = oevt.Source.Text
cel.SetValue(DateValue(laDate))
dlg.endExecute()
end sub
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian GNU/Linux 12 (bookworm)
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2791
Inscription : 16 avr. 2010 13:31

Re: [Résolu][Calc]Selecteur de Date par Double-clic

Message par OOotremer971 »

Pour bénéficier de cette fonctionnalité plus facilement dans tous les fichiers, ci joint une librairie complète à importer par le menu Outils>Macro>Gérer les boites de dialogue. Sous l'onglet bibliothèques, cliquer sur importer puis sélectionner la bibliothèque nommée Library1 après l'avoir préalablement décompressée.
Library1.zip
Plus simplement, la même bibliothèque exportée comme simple extension. Pour l'installer : clic droit sur le fichier oxt>Ouvrir avec puis sélectionner soit AOO ou Lo :
ChampsDateDoubleClic.oxt
Une fois fait, pour activer la fonctionnalité pour un fichier, menu Outils>Macro>Exécuter la macro puis développer Mes macros>Library1Module1>Activer_DoubleClic puis cliquer sur Exécuter
DoubleClic.png
Pour en bénéficier plus rapidement dans tous les fichers, il est préférable d'attacher la sub Activer_DoubleClic à un raccourci clavier.

Un listener surveille le doble-clic :

Code : Tout sélectionner

Option Explicit

global surveillanceClic as object
private dlg As Object, selection As Object, oCtrl As Object


sub Activer_DoubleClic
oCtrl = thisComponent.currentController
surveillanceClic = CreateUnoListener("Clic_","com.sun.star.awt.XMouseClickHandler")
oCtrl.addMouseClickHandler(surveillanceClic)
end sub

sub Desactiver_DoubleClick
On Error Resume Next
oCtrl.removeMouseClickHandler(surveillanceClic)
On Error Goto 0
end sub

Sub Clic_mousePressed(oEvt As Object) as boolean
if oEvt.ClickCount = 2 Then
	selection = thisComponent.CurrentSelection
	If selection.supportsService("com.sun.star.table.Cell") Then
		activerDialogue
	end if 
end if
end Sub

Sub Clic_mouseReleased(oEvt As Object) as boolean
End Sub

Sub Clic_disposing(oEvt As Object)
End Sub

Sub activerDialogue
Dim bibli As Object, oDlg As Object
GlobalScope.DialogLibraries.loadLibrary("Library1")
bibli = GlobalScope.DialogLibraries.getByName("Library1")
oDlg = bibli.getByName("Dialog1")
dlg = CreateUnoDialog(oDlg)
dlg.execute
End Sub

Sub dater(oEvt As Object)
Dim laDate As String
laDate = oevt.Source.Text
selection.SetValue(DateValue(laDate))
selection.NumberFormat = 37 
dlg.endExecute
end sub

Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian GNU/Linux 12 (bookworm)