[Résolu]recuperer le champ de date vers une cellule
Modérateur : Vilains modOOs
Règles du forum
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 !
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 !
-
- NOOuvel adepte
- Messages : 21
- Inscription : 31 mai 2007 07:58
[Résolu]recuperer le champ de date vers une cellule
salut tout le monde!!!
je viens de faire une recherche assez longue mais je n'arrive pas a trouver comment faire pour recuperer la date de mon champ de date qui est dans une boite de dialogue que j'ai créé pour l'afficher dans une cellule de mon document calc.....
j'ai mi sous le champ de date un bouton OK et un bouton ANNULER, je pense donner comme fonction au bouton ANNULER uniquement la fermeture de ma boite de dialogue et au bouton OK la recuperation de ma donnée DATE et l'ecriture dans une cellule cible de clac....
merci.
je viens de faire une recherche assez longue mais je n'arrive pas a trouver comment faire pour recuperer la date de mon champ de date qui est dans une boite de dialogue que j'ai créé pour l'afficher dans une cellule de mon document calc.....
j'ai mi sous le champ de date un bouton OK et un bouton ANNULER, je pense donner comme fonction au bouton ANNULER uniquement la fermeture de ma boite de dialogue et au bouton OK la recuperation de ma donnée DATE et l'ecriture dans une cellule cible de clac....
merci.
Dernière modification par klm le 14 juin 2007 15:44, modifié 3 fois.
OOO 2.2
win xp
win xp
-
- Membre hOOnoraire
- Messages : 123
- Inscription : 27 déc. 2005 13:08
Au même titre que les champ horaire, la récupération et l'utilisation d'une date entrée dans une boîte de dialogue est un peu plus complexe que pour un champ de type texte ou numérique.
Le champ de date retournant une valeur sous forme d'un entier Long genre 20070612 doit être convertie via une petite routine.
D'après le livre de BM et LG, voici la routine à insérer comme une simple macro:
Voici maintenant comment inscrire ta date dans la cellule A1 de ta feuille "Feuille 1":
N'oublie pas de changer le nom de la bibliothèque, du champ de date pour qu'ils correspondent à ton cas perso
Cordialement
Le champ de date retournant une valeur sous forme d'un entier Long genre 20070612 doit être convertie via une petite routine.
D'après le livre de BM et LG, voici la routine à insérer comme une simple macro:
Code : Tout sélectionner
' conversion du champ Date en année, mois, jour
Sub ChampDate_AMJ(champ As Long, _
an As Integer, mois As Integer, jour As Integer)
Dim chaineDate As String
chaineDate = Str(champ)
an = CInt(Left(chaineDate, 5))
mois = CInt(Mid(chaineDate, 6, 2))
jour = CInt(Right(chaineDate, 2))
End Sub
Code : Tout sélectionner
Sub Main1()
Dim Dlg As Object, bibli As Object
Dim monDialogue As Object, exitOK As Integer
Dim champDate As Object, uneDate As Long
Dim a As Integer, m As Integer, j As Integer
exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
bibli = DialogLibraries.GetByName("Date")
monDialogue = bibli.GetByName("Dialog1")
Dlg = CreateUnoDialog(monDialogue)
if Dlg.Execute = exitOK then
champDate = Dlg.getControl("DateField1")
uneDate = champDate.Date
ChampDate_AMJ(uneDate, a, m, j)
ThisComponent.Sheets.getbyName("Feuille1").GetCellRangeByName("A1").string = j & "/" & m & "/" & a
end if
Dlg.Dispose
End Sub
Cordialement
Windows 7 64 Bits avec AOo 4.1.2
-
- NOOuvel adepte
- Messages : 21
- Inscription : 31 mai 2007 07:58
j'ai essayé avec ce que tu viens de me donner mais je n'y arrive pas, j'ai toujours une erreur au niveau de
ou il me dit que l'argument n'est pas optionnel je crois
j'ai alors essayé de me faire un code mais je tourne un peu en rond car la date s'affiche dans la cellule C3 mais c'est tjrs 0/0/00 quel que soit la date.....
je vous donne mon code si qqun peut me venir en aide, merci
merci
Code : Tout sélectionner
chaineDate = Str(champ)
j'ai alors essayé de me faire un code mais je tourne un peu en rond car la date s'affiche dans la cellule C3 mais c'est tjrs 0/0/00 quel que soit la date.....
je vous donne mon code si qqun peut me venir en aide, merci
Code : Tout sélectionner
Sub DemanderDate()
dim dlg as object, bibli as object
dim monDialogue as object, exitOK as string
dim champdate as object, dateISO as long, ladate as date
dim a as integer, m as integer, j as integer
exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
bibli = DialogLibraries.GetByName("Standard")
monDialogue = bibli.GetByName("Dialog1")
Dlg = CreateUnoDialog(monDialogue)
if dlg.Execute = exitOK then
champdate = dlg.getControl("datefield")
dateISO = champdate.Date
ladate = CDateFromISO(dateISO)
ThisComponent.Sheets.getbyName("DEVIS").GetCellRangeByName("C3").string = j & "/" & m & "/" & a
end if
dlg.dispose
end sub
OOO 2.2
win xp
win xp
-
- Membre cOOnfirmé
- Messages : 244
- Inscription : 17 janv. 2007 19:18
- Localisation : Lille(59) - Lesboeufs (80)
Bonsoir
Pas bien compris le sens de la réponse de machine Head.
Si il faut simplement récupérer la valeur d'un champ date d'une boite de dialogue, moi je ferai :
ce qui concrétement donne :
http://user.services.openoffice.org/fr/ ... 091935.ods
Ou la cellule A7 est formatée en date bien sur ...
Si j'ai loupé un épisode, merci de me le faire savoir ....
Pas bien compris le sens de la réponse de machine Head.
Si il faut simplement récupérer la valeur d'un champ date d'une boite de dialogue, moi je ferai :
Code : Tout sélectionner
Sub demanderDate()
Dim Dlg As Object, bibli As Object
Dim monDialogue As Object, exitOK As Integer
Dim champDate As Object, dateISO As Long
exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
DialogLibraries.Loadlibrary("Standard")
bibli = DialogLibraries.GetByName("Standard")
monDialogue = bibli.GetByName("Dialog1")
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
http://user.services.openoffice.org/fr/ ... 091935.ods
Ou la cellule A7 est formatée en date bien sur ...
Si j'ai loupé un épisode, merci de me le faire savoir ....
Amicalement Philippe BRONCHART
Win 10 Libre office 5.0 (perso)
Win 10 Libre office 5.0 (perso)
-
- NOOuvel adepte
- Messages : 21
- Inscription : 31 mai 2007 07:58
merci Philippe.
j'ai tout de meme reessayé avec le code de Machine Head(c'est un vieux groupe de rock francais ca non??) et avec qques modification en fait j'arrive au resultat avec un code un peu plus leger que le tien mais je ne sais pas si c'est bien orthodoxe!!!!!
je te le donne pour comparer et pour ceux qui feront des recherches plus tard:
j'ai une boite de dialogue contenant un champdate que je lance d'un bouton d'une feuille calc.la boite de dialogue a en plus un bouton OK et un ANNULER.la macro suivante est assigner au bontou de ma feuille calc SAISIE:
ce qui me donne "Aix en provence le ../../...." dans la cellule D4 de ma feuille DEVIS quand j'appuie sur OK.
merci a tous!
j'ai tout de meme reessayé avec le code de Machine Head(c'est un vieux groupe de rock francais ca non??) et avec qques modification en fait j'arrive au resultat avec un code un peu plus leger que le tien mais je ne sais pas si c'est bien orthodoxe!!!!!
je te le donne pour comparer et pour ceux qui feront des recherches plus tard:
j'ai une boite de dialogue contenant un champdate que je lance d'un bouton d'une feuille calc.la boite de dialogue a en plus un bouton OK et un ANNULER.la macro suivante est assigner au bontou de ma feuille calc SAISIE:
Code : Tout sélectionner
Sub DemanderDate()
dim dlg as object, bibli as object
dim monDialogue as object, exitOK as string
dim champdate as object, dateISO as long, ladate as date
exitOK = com.sun.star.ui.dialogs.ExecutableDialogResults.OK
bibli = DialogLibraries.GetByName("Standard")'nom de la bibli ou se trouve la boite
monDialogue = bibli.GetByName("Dialog1") 'nom de la feuille de macro ou se trouve la boite
Dlg = CreateUnoDialog(monDialogue)
if dlg.Execute = exitOK then
champdate = dlg.getControl("datefield")
dateISO = champdate.Date
ladate = CDateFromISO(dateISO)'conversion dateISO au format jj/mm/aaaa
ThisComponent.Sheets.getbyName("DEVIS").GetCellRangeByName("D4").string = "Aix en Provence le" & ladate
end if
dlg.dispose
end sub
merci a tous!
OOO 2.2
win xp
win xp
-
- Grand Maître de l'OOffice
- Messages : 11276
- Inscription : 02 mai 2006 08:42
Bonjour
Juste pour information, puisque ton code répond parfaitement au besoin :
Juste pour information, puisque ton code répond parfaitement au besoin :
- La solution de Philippe suppose que la cellule est formatée en date.
- L'utilisation de la propriété string insère la date au format texte (ce qui, dans ton cas est ce que l'on veut puisque tu concatènes avec un texte)
- Pour insérer une date au format "français" (jj/mm/aa) on peut utiliser la propriété formulaLocal. Il ne sera pas nécessaire de formater la cellule au format date au préalable.
Code : Tout sélectionner
ThisComponent.Sheets.getbyName("Feuille1").GetCellRangeByName("D4").string = "Aix en Provence le" & ladate
ThisComponent.Sheets.getbyName("Feuille1").GetCellRangeByName("D5").string = ladate
ThisComponent.Sheets.getbyName("Feuille1").GetCellRangeByName("D6").formulalocal = ladate
-
- NOOuvel adepte
- Messages : 21
- Inscription : 31 mai 2007 07:58
bon je viens de decouvrir un nouveau probleme, c'est que ma premiere sollicitation de ma macro apres l'ouverture du document se solde par une erreur sur la ligne:
et l'erreur est: Action non supportée
Appel de procedure non valide
mais si je relance ensuite ma macro cela fonctionne tres bien....pensez vous qu'il y est un souci au chargement du document, et si oui comment faire?????
merci encore
Code : Tout sélectionner
dlg = CreateUnoDialog(monDialogue)
Appel de procedure non valide
mais si je relance ensuite ma macro cela fonctionne tres bien....pensez vous qu'il y est un souci au chargement du document, et si oui comment faire?????
merci encore
OOO 2.2
win xp
win xp
-
- RespOOnsable forum
- Messages : 12234
- Inscription : 08 nov. 2005 16:23
- Localisation : Caen, France
Bonjour,
Ce forum est avant tout une base de connaissances. Avant de poser une question, vous devez d'abord effectuer une recherche afin de voir si votre problème n'a pas déjà une solution. Il vous suffit d'utiliser le lien "Rechercher" indiqué en haut de la page.
Dans votre cas, votre problème a déjà fait l'objet de sujets.
En recherchant sur les termes :
action and support*
Vous obtenez :
http://user.services.openoffice.org/fr/ ... ction.html
A l'avenir, pensez à faire cette recherche vous-même. Vous gagnerez ainsi du temps puisque la réponse existe déjà.
Il semble que votre question ait trouvé une solution. Il est alors de bon ton d'ajouter dans le titre du premier message la balise [Résolu]. Ceci augmente la lisibilité du forum.
Merci de respecter la syntaxe [Résolu] : entre crochets, avec un R majuscule et un é
Suivez ce sujet pour savoir comment procéder : http://user.services.openoffice.org/fr/ ... c3299.html
Cordialement
Ce forum est avant tout une base de connaissances. Avant de poser une question, vous devez d'abord effectuer une recherche afin de voir si votre problème n'a pas déjà une solution. Il vous suffit d'utiliser le lien "Rechercher" indiqué en haut de la page.
Dans votre cas, votre problème a déjà fait l'objet de sujets.
En recherchant sur les termes :
action and support*
Vous obtenez :
http://user.services.openoffice.org/fr/ ... ction.html
A l'avenir, pensez à faire cette recherche vous-même. Vous gagnerez ainsi du temps puisque la réponse existe déjà.
Il semble que votre question ait trouvé une solution. Il est alors de bon ton d'ajouter dans le titre du premier message la balise [Résolu]. Ceci augmente la lisibilité du forum.
Merci de respecter la syntaxe [Résolu] : entre crochets, avec un R majuscule et un é
Suivez ce sujet pour savoir comment procéder : http://user.services.openoffice.org/fr/ ... c3299.html
Cordialement