[Résolu][Calc] Récupérer la valeur d'un contrôle Date

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 !
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

[Résolu][Calc] Récupérer la valeur d'un contrôle Date

Message par willydine »

Bonjour à tous,
on ma dit qu'il n'était pas possible de récupérer une date contenu dans une date field pour la mettre dans une cellule, existerai-t-il par hasard une macro qui ferai cela svp?merci bien :!:
Dernière modification par willydine le 15 mars 2007 11:01, modifié 1 fois.
OO 2.1 sous XP. Pro
Philippe BRONCHART
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 244
Inscription : 17 janv. 2007 19:18
Localisation : Lille(59) - Lesboeufs (80)

Message par Philippe BRONCHART »

Hello

Effectivement, il faut une macro :

Celle ci place en A7 la date sélectionnée dans le calendrier de la boite de dialogue :

Code : Tout sélectionner

Public LaDate as date
Sub demanderDate()

Dim Dlg As Object, bibli As Object
Dim monDialogue As Object, exitOK As Integer
Dim champDate As Object, dateISO As Long
Dim a As Integer, m As Integer, j As Integer

exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
DialogLibraries.Loadlibrary("Standard")
bibli = DialogLibraries.GetByName("Standard")
monDialogue = bibli.GetByName("Dialogue_Calendrier")
Dlg = CreateUnoDialog(monDialogue)
if Dlg.Execute = exitOK then
  champDate = Dlg.getControl("DateField1")
  DateISO = champDate.Date
  laDate = CDateFromISO(dateISO)
 end if
Dlg.Dispose

End Sub
Sub ecriredate
DemanderDate ' on lance le calendrier
 MonDoc = ThisComponent 'Sélectionne le document en cours
 MaFeuille = MonDoc.CurrentController.ActiveSheet 'Attribue la feuille en cours à la variable
 oCurseur = MaFeuille.createCursor ' création du curseur
 MaFeuille.getCellByPosition(0,6).value = LaDate '0 = Valeur en A7
  	
end sub
Je te mets un exemple d'appli :

http://user.services.openoffice.org/fr/ ... 050244.ods

Cela répond il à la question ?


AMicalement

Philippe BRONCHART
Amicalement Philippe BRONCHART

Win 10 Libre office 5.0 (perso)
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

Merci encore une fois bon maintenant il faut que j'essaye de l'appliquer à mon cas. Je m'excuse d'avance mais je risque de demander de l'aide à nouveaux si je n'y arrive pas.merci de ta patience! :oops:
OO 2.1 sous XP. Pro
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

Bonjour,
est-il possible d'adapter ce code directement à une feuille calc plutot que de passer par une boîte de dialogue? si oui comment svp?merci
OO 2.1 sous XP. Pro
Philippe BRONCHART
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 244
Inscription : 17 janv. 2007 19:18
Localisation : Lille(59) - Lesboeufs (80)

Message par Philippe BRONCHART »

Bonjour

Si j'ai bien compris la question :

A ma connaissance ce n'est pas réalisable. On ne peut pas lier la valeurd'un DateField à une cellulle directement dans Calc.

AMicalement

Pgilippe BRONCHART
Dernière modification par Philippe BRONCHART le 09 mars 2009 10:05, modifié 1 fois.
Amicalement Philippe BRONCHART

Win 10 Libre office 5.0 (perso)
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour

Tu peux affecter cette macro à l'événement "perte de focus" du champ date.

Code : Tout sélectionner

option explicit

Sub PysChampDate
dim PysFeuille as object, PysCtrl as object

PysFeuille = thiscomponent.sheets.getByName("Feuille1")				'Pointe vers la feuille
PysCtrl = PysFeuille.DrawPage.forms.getByName("Standard").getByName("DateField")	'Pointe vers le contrôle champ Date
PysFeuille.GetCellRangeByName("A1").formulalocal=PysCtrl.Text						'Affecte la valeur à la cellule
End Sub
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

apré avoir exécuter ce code j'ai une erreur sur la ligne en rouge

option explicit

Sub PysChampDate
dim PysFeuille as object, PysCtrl as object

PysFeuille = thiscomponent.sheets.getByName("MMarty")
PysCtrl = PysFeuille.DrawPage.forms.getByName("Standard").getByName("dfDate") PysFeuille.GetCellRangeByName("B9").formulalocal=PysCtrl.Text
End Sub
OO 2.1 sous XP. Pro
Nicolas
Membre hOOnoraire
Membre hOOnoraire
Messages : 121
Inscription : 30 nov. 2006 13:28
Localisation : Chambéry (73)

Message par Nicolas »

hello
ci joint le code d'une macro qui écrit la valeur d'un champ date dans une cellule, déclenchée lorsque le champ de date est modifié:

Code : Tout sélectionner

Sub EcrireDate()
Dim monDoc as Object, maFeuille as Object, monForm as Object, maCellule as Object
Dim monChamp as String


	monDoc = ThisComponent
	maFeuille = monDoc.Sheets.getByName("Donnees)
	maCellule = maFeuille.getCellRangeByName("I11")'cellule de destination de la date
	monForm = maFeuille.DrawPage.Forms.getByName("Form1")
	monChamp = monForm.getByName("DateField").text 'Champ date placé sur la feuille calc
	If isnull(monChamp) Then
		maCellule.setString("Problème, aucune date choisie !")
	Else
		maCellule.setValue(CDate(monChamp))
	End If
End Sub
@+
nicolas.
OoO 3.0.1 XP home SP3
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

désolé mais est ce que tu pourrai m'expliquer ton code stp?merci
OO 2.1 sous XP. Pro
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

Merci beaucoup ca marche à merveille!
OO 2.1 sous XP. Pro
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Nicolas a écrit :

Code : Tout sélectionner

maCellule.setValue(CDate(monChamp))
Juste un complément d'information : utiliser la propriété formulalocal permet d'affecter directement une date au format local ("français" en l'occurrence) sans devoir faire une conversion.

Cf. exemple tiré du code de mon post précédent :

Code : Tout sélectionner

PysFeuille.GetCellRangeByName("A1").formulalocal=PysCtrl.Text
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

J'ai un souci finalement, j'essaye d'appliquer cette macro à plusieurs feuille de classeur mais cela fonctionne pour certaine et pas pour d'autres comment ca se fait?
OO 2.1 sous XP. Pro
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

voila mon appli si quelqu'un peu y jetter un coup d'oeil la macro se trouve sur la feuille CtrlDateField, merci
http://user.services.openoffice.org/fr/ ... 032352.ods
OO 2.1 sous XP. Pro
willydine
Membre hOOnoraire
Membre hOOnoraire
Messages : 115
Inscription : 12 mars 2007 13:32

Message par willydine »

C'est bon en fait j'avais un problème avec mes noms de formulaires qui étaient tous identiques ce qui faisait planter la macro.
OO 2.1 sous XP. Pro
adrisevtom
Fraîchement OOthentifié
Messages : 3
Inscription : 07 juil. 2017 13:31

Re: [Résolu] Récupérer la valeur d'un contrôle Date

Message par adrisevtom »

Bonjour Willydine,

Je déterre un peu ce sujet, mais je n'arrive pas a alimenter une cellule avec une date choisie dans un DateField.
Du coup j'ai testé ton fichier, et je n'arrive pas à comprendre pourquoi ça fonctionne dans certaines feuilles et pas d'autres.
Peux-tu me donner des éclaircissements, ça m'aiderai peut-être à comprendre pourquoi ça ne fonctionne pas chez moi..

Merci infiniment,
Adrien
OpenOffice 4.1 sous Windows 7 x64
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12457
Inscription : 08 nov. 2005 16:23
Localisation : Caen, France

Re: [Résolu] Récupérer la valeur d'un contrôle Date

Message par Bidouille »

Ami fossoyeur
adrisevtom a écrit : 05 juil. 2023 12:23 Je déterre un peu ce sujet
Lisez ceci : déterrage = verrouillage.
Vous pensez bien que depuis 2007, les choses ont bien changés.