Page 1 sur 1

[Résolu] [Calc] Sauvegarder avec un nom de cellule

Publié : 12 févr. 2008 10:16
par J0K0
Bonjour,

Tout neuf dans le milieu Linux et donc OpenOffice.org en concéquent ce qui est bien vu la gratuité de la chose. Déjà bravo pour ce travail !

J'avais créer une feuille excel avec des listes déroulantes il y a un moment qui me servait pour mettre des noms, fonctions, heures, dates, et à la fin de ce document j'avais un petit bouton ENREGISTRER et IMPRIMER, en plus j'avais eux de l'aide pour un code pour que sur une feuille, lorsqu'il avait par exemple R - CA ou CA, la case ne mettait en jaune et d'autres encore .... le document marchait niquel jusqu'à ce que je passe sous linux tout le parc informatique (ubuntu), résultat, open office ne lit pas tout.
Je m'explique, les listes déroulantes qui pointent sur une autre feuille, pas de soucis, par contre ces deux boutons (enregistrer et imprimer) et le code couleur c'est mort, ils ne marchent pas, pour bien faire j'ai refais tout le document sous openoffice pour qu'il soit plus stable à cause de la conversion .xls > .ods mais maintenant, je bloc sur ces deux codes : enregistrer et imprimer.
J'ai essayé de bidouiller un truc en enregistrant une macro pour essayer de comprendre le language oooBASIC, mais je n'y comprends vraiment rien du tout ... un peu d'aide me ferait un énorme bien !!

Voilà les deux codes sous VBA, si on peut faire le changement VBA vers oooBASIC .... ??

pour Enregistrer :

Code : Tout sélectionner

Private Sub CommandButton1_Click()

Dim str As String

Dim dir As String

dir = "\\Server-sph\server_files\feuille de garde\Historique\"

Range("S57:AD57").Select

montexte = Range("S57").Text & Range("T57").Text & Range("U57").Text & Range("V57").Text & Range("W57") & Range("X57") & Range("Y57") & Range("Z57") & Range("AA57") & Range("AC57") & Range("AD57")

str = dir & montexte & ".xls"

ActiveWorkbook.SaveAs Filename:= _

str, FileFormat:=xlNormal, _

Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

End Sub



Pour imprimer :

Code : Tout sélectionner

Private Sub CommandButton2_Click()

Worksheets("fdgai").PrintOut

End Sub
Merci !

Publié : 12 févr. 2008 10:19
par Papayes
Bonjour et bienvenue sur notre forum,
Le Modérateur a écrit : Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.

Lisez ce fil pour savoir quelle balise utiliser :
http://user.services.openoffice.org/fr/ ... html#27295

N'oubliez pas que le terme "Macro" ou "OpenOffice" ne doit pas être employé car il est implicite. Essayer de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Nous l'avons fait pour vous cette fois-ci mais lors de votre prochaine question, nous vous remercions de le faire vous-même sous peine de voir votre sujet verrouillé.
Utilisez le Bouton Code du message pour entourer vos macros.
Très cordialement, l'équipe de modération.

Re: [Excel] VBA / OOo BASIC

Publié : 12 févr. 2008 10:27
par Dude
J0K0 a écrit :Voilà les deux codes sous VBA, si on peut faire le changement VBA vers oooBASIC .... ??
http://user.services.openoffice.org/fr/ ... .html#7506
Cas n° 3

Tu peux commencer par consulter la section Suprême de code avec cet excellent exemple pour débuter :
http://user.services.openoffice.org/fr/ ... -asc-.html

Bon dév.

vba - ooo basic

Publié : 14 févr. 2008 15:42
par J0K0
Hello,

Tout d'abord désolé ... de m'y prendre mal pour cette "demande".
Par contre après avoir lu le cas 1, 2, 3, je me rends compte que c'est : démerdes toi et laisse nous tranquile ... Malgré que j'approuve un peu ...

J'vais y mettre du mien, j'vais essayé ou plutot réessayer de bidouiller quelque chose avec l'enregistrement de macro ... j'pense déjà me casser les dents et le perdre mon temps pour un résultat que je n'arriverais pas à atteindre seul ..

Merci quand mm !

Re: vba - ooo basic

Publié : 14 févr. 2008 15:57
par Dude
J0K0 a écrit :je me rends compte que c'est : démerdes toi et laisse nous tranquile ...
Je ne crois pas avoir formulé cette réponse. Mais relis juste ta question : à part nous donner du VBA à traduire, tu ne précises rien de ce que font chaque ligne de code.
J0K0 a écrit :J'vais y mettre du mien, j'vais essayé ou plutot réessayer de bidouiller quelque chose avec l'enregistrement de macro ... j'pense déjà me casser les dents et le perdre mon temps pour un résultat que je n'arriverais pas à atteindre seul ..
Si tu pars perdant... :?

Mais l'enregistreur n'est pas la réponse à ton problème. Et regarde déjà le lien que je te donne pour comprendre la philosophie.

vba - ooo basic

Publié : 14 févr. 2008 15:58
par J0K0
Donc voilà, après un premier bidouillage avec l'enregistrement de plusieurs macros voilà mon résultat (que je ne peux pas controler vu que j'suis pas relié à mon réseau --> l'impression se lance, mais je ne sais pas si c'est la bonne feuille, je présume !)

Code : Tout sélectionner

sub imprimer03
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 3

dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, args1())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:PrintPreview", "", 0, Array())
au début j'avais la ligne ou y'a marqué dispatcher.executeDispatch ....... au lieu de PrintDefault, j'avais JumpTo (je crois) du coup ca n'imprimait pas, avec le remplacement, ca a l'air de se lancer, pourrais je juste avoir un avis sur la macro ? s'il y contient des fautes ?? (DESOLE, JE DOIS VOUS DEMANDEZ DE CORRIGER SI C'EST LE CAS MA MACRO !) cas n°1 je crois ?

Merci !!!

Re: vba - ooo basic

Publié : 14 févr. 2008 16:01
par J0K0
Dude a écrit :
J0K0 a écrit :je me rends compte que c'est : démerdes toi et laisse nous tranquile ...
Je ne crois pas avoir formulé cette réponse. Mais relis juste ta question : à part nous donner du VBA à traduire, tu ne précises rien de ce que font chaque ligne de code.
J0K0 a écrit :J'vais y mettre du mien, j'vais essayé ou plutot réessayer de bidouiller quelque chose avec l'enregistrement de macro ... j'pense déjà me casser les dents et le perdre mon temps pour un résultat que je n'arriverais pas à atteindre seul ..
Si tu pars perdant... :?

Mais l'enregistreur n'est pas la réponse à ton problème. Et regarde déjà le lien que je te donne pour comprendre la philosophie.
Désolé, je ne suis pas pro dans les forums :

J'avais expliqué que c'était deux macros pour :
La premiere imprimer une feuille présélectionnée par la macro en elle meme
La deuxième Enregistrer sous automatique : en prenant des infos de plusieurs cellule de la premiere feuille, elle enregistre le fichier dans un répertoire précis configuré dans la macro à l'aide donc des différentes infos des cellules.

merci !

Re: vba - ooo basic

Publié : 14 févr. 2008 16:04
par J0K0
JE suppose que les ligne ou se trouve "rem" n'est qu'un simple commentaire ?

Je viens de voir (désolé j'bosse sur un laptop de 10 pouces) le code au complet et à la fin y'a PrintDefaut et PrintPreview et ca passe bien en direct ....

N'est il pas ?

Merci !

Re: vba - ooo basic

Publié : 14 févr. 2008 16:28
par Dude
J0K0 a écrit :La deuxième Enregistrer sous automatique : en prenant des infos de plusieurs cellule de la premiere feuille, elle enregistre le fichier dans un répertoire précis configuré dans la macro à l'aide donc des différentes infos des cellules.
Un petit exemple :
http://user.services.openoffice.org/fr/ ... strer.html

Re: vba - ooo basic

Publié : 14 févr. 2008 17:41
par J0K0
J'pense que vous avez mal compris ma question ... Voici une macro que je suis en train de bidouiller pour voir si ca marche .... Forcément elle ne marchera pas vu que je bidouille quelque chose que je ne pige pas des masses avec une base VBA ....

à votre écoute ... ?

Code : Tout sélectionner

sub enregistrer05
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$25:$M$25"
args1(1).Name = "URL"
args1(1).Value = "/home/joko/Bureau/"
args1(2).Name = "montexte"
args1(2).Value = "Range("F25").Text & Range("G25").Text & Range("H25").Text & Range("I25").Text & Range("J25").Text & Range("K25").Text & Range("L25").Text & Range("M25").Text"
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1(2+".ods"))
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

end sub

Déjà il me fait des erreurs, il ne reconnait pas les cellules à sélectionner, mm avec $F$25 ....

Merci

Publié : 14 févr. 2008 18:41
par chater
Salut,

Comme te le dit Dude, tu devrais arrêter l'enregistreur et prendre un peu de temps pour étudier les codes qui sont mis à disposition sur ce forum.
J0K0 a écrit :J'pense que vous avez mal compris ma question ...
Tu dois aller à l'essentiel et couper ton problème en morceaux, si j'ai compris ta question (j'ai dû faire un effort pour te comprendre :x):
1- tu cherches à récupérer des infos dans des cellules
2- avec ces infos tu constitues le nom du fichier
3- tu enregistres ton fichier avec ce nom

Pour le 3, Dude te donne la réponse

Pour le 1, une petite recherche te donne des réponses par exemple :
http://user.services.openoffice.org/fr/ ... asc-r.html

Je te laisse recherche le 2

Publié : 14 févr. 2008 22:32
par J0K0
chater a écrit :Salut,

Comme te le dit Dude, tu devrais arrêter l'enregistreur et prendre un peu de temps pour étudier les codes qui sont mis à disposition sur ce forum.
J0K0 a écrit :J'pense que vous avez mal compris ma question ...
Tu dois aller à l'essentiel et couper ton problème en morceaux, si j'ai compris ta question (j'ai dû faire un effort pour te comprendre :x):
1- tu cherches à récupérer des infos dans des cellules
2- avec ces infos tu constitues le nom du fichier
3- tu enregistres ton fichier avec ce nom

Pour le 3, Dude te donne la réponse

Pour le 1, une petite recherche te donne des réponses par exemple :
http://user.services.openoffice.org/fr/ ... asc-r.html

Je te laisse recherche le 2
Exactement !

En fait, j'avais déjà trouvé en bidouillant des macros que j'ai enregistré comment faire ... à présent mes recherches se situent sur le cas 1 et 2, donc récupérer les infos des cellules et en faire mon nom de fichier et ENSUITE pour finir associer les 3 cas en une seule macro ...

J'vais continuer à bidouiller et à chercher ...

Merci

Publié : 15 févr. 2008 10:11
par Dude
D'autant qu'en cherchant autre chose, je m'aperçois que cette question est déjà passée :
http://user.services.openoffice.org/fr/ ... -asc-.html

:idea:

Re: vba - ooo basic

Publié : 15 févr. 2008 10:13
par J0K0
Bonjour,

J'ai regardé au niveau des liens que vous m'avez fillé et bien d'autres trouvés sur google .... y'a rien qui ressemble à ce que je veuille faire ...
Voici mon code, forcément qui fait des erreurs ... j'ai remarqué que si on copie plusieurs cellules on pouvait coller ces dernieres dans le nom lors d'un SaveAs mais, ca fait un nom à rallonge avec beaucoup d'espace, il ne faudrait prendre que le texte et non l'intégralité ... --> rien trouvé là dessus
Ensuite pour définir un endroit ou enregistrer : URL signifiant "le nom et l'endroit" ou ca sera enregistrer donc en mettant DIR, ca ne fonctionne pas...

merci

Code : Tout sélectionner

sub enregistrer05
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$25:$M$25"
args1(1).Name = "dir"
args1(1).Value = "/home/joko/Bureau/"
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, args1(0))
dispatcher.executeDispatch(document, ".uno:Save", "", 0, args1() + ".ods")
rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

end sub

Publié : 15 févr. 2008 10:28
par Dude
As-tu lu le lien que je t'ai envoyé ? :evil:

Re: vba - ooo basic

Publié : 15 févr. 2008 10:30
par J0K0
ah je dis ouais !

Bon, en fouinant, bidouillant comme d'hab voilà au résultat que j'arrive :

L'endroit ou je veux que ca enregistre, c'est bon, ca sélectionne mes cellules et là HELP : comment faire pour ne prendre QUE le texte des cellules ? (sinon il y a des espèces très longs) ensuite ça m'ouvre le SaveAs et ça ne colle pas ma sélection ....

Donc comment faire pour ne prendre que le texte des cellules ?
Comment faire pour enregistrer par défaut ?
Comment coller la sélection tout seul ?

Merci, voilà mon code :

Code : Tout sélectionner

sub enregistrer08
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$25:$N$25"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(2) as new com.sun.star.beans.PropertyValue
dir = "/home/joko/Bureau/"
args3(1).Name = "FilterName"
args3(1).Value = "calc8"
args3(2).Name = "SelectionOnly"
args3(2).Value = true

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args3())


end sub

Re: vba - ooo basic

Publié : 15 févr. 2008 10:32
par J0K0
Dude a écrit :As-tu lu le lien que je t'ai envoyé ? :evil:
Hey salut Dude (j'ai un collègue de taf qu'on appel comme ça ...)

Désolé, j'crois que chaque fois que j'écris mon post, tu y réponds en mm temps ... j'vais voir ton lien :)

MERCI !

[Résolu] Bouton Enregistrer & Imprimer

Publié : 15 févr. 2008 10:48
par J0K0
wOUUUUUUUUUUUuuw !!

Merci Dude !!!

Voici pour résumer mon code pour un bouton Imprimer et Enregistrer (en prenant des infos de plusieurs cellules) :

Imprimer :

Code : Tout sélectionner

sub imprimer03
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 3

dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, args1())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:PrintPreview", "", 0, Array())


end sub
Enregistrer en prenant des infos de plusieurs cellules pour créer le nom du fichier final :

Code : Tout sélectionner

sub enregistrer09
rem ----------------------------------------------------------------------
rem definitions des variables
rem ----------------------------------------------------------------------
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
rem ----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
rem Récupération du contenu de la cellule B8
rem ----------------------------------------------------------------------
MonDoc = ThisComponent
MaFeuil = MonDoc.CurrentController.ActiveSheet
MonTxt = MaFeuil.GetCellRangeByName("F25").String & MaFeuil.GetCellRangeByName("G25").String & MaFeuil.GetCellRangeByName("H25").String & MaFeuil.GetCellRangeByName("I25").String & MaFeuil.GetCellRangeByName("J25").String & MaFeuil.GetCellRangeByName("K25").String & MaFeuil.GetCellRangeByName("L25").String & MaFeuil.GetCellRangeByName("M25").String
rem ----------------------------------------------------------------------
rem Enregistrement du nouveau fichier
rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///home/joko/Bureau/" & MonTxt & ".ods"
args1(1).Name = "FilterName"
args1(1).Value = "calc8"
args1(2).Name = "SelectionOnly"
args1(2).Value = true

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())

rem ----------------------------------------------------------------------
rem fin de la macro
rem ----------------------------------------------------------------------

end sub

Voilà en remerciant encore tout le monde d'avoir pris un peu de son temps ! En espérant que ca aide d'autre personne à se tourner vers le monde du libre.

Bonne journée et bonne continuation !

-- C'est en équipe qu'on réussira le mieux --