[prog] Re: Calc et case à cocher pour une null e
Agnès Simonet a écrit : nimel a écrit : Bonjour, Ben non décidément je dois pas être douée, rien à faire je n'arrive pas à progresser avec l'API, malgrès Xray et les différentes doc. Dès que je crois comprendre et que je tente une solution ça ne marche pas. Les exemples que j'ai eu je ne les comprend pas, il y a des histoires d'haricots (beans) que je ne trouve expliquées nulle part ! Mon but ultime : Dans une feuille Calc, il y a une case à cocher par ligne. Chaque ligne contient de multiples données réparties sur plusieurs colonnes. Quand l'utilisateur coche la case, il faut que la cellule adjacente se remplisse avec oui et que le texte de la ligne concernée devienne rouge. Je suis d'accord que je pourrais le faire rien qu'avec le contrôle de la cac et du formatage conditionnel. Mais le soucis c'est qu'il y a plus de 200 lignes à faire et à priori on ne peux pas faire des copier/coller relatifs avec des éléments de formulaire ! J'ai donc pensé qu'il était plus judicieux se baser sur la position du focus au moment où on coche la case. Bonjour, La question que je me pose c'est comment as-tu crée tes 200 cases à cocher ? En tout cas, je sais que les formulaires se trouvent sur ce qu'on appelle la page de dessin de la feuille, à laquelle on accède par DrawPage. Donc pour accéder à une case à cocher case1 faisant partie d'un formulaire form1 dans une feuille feuille1 on doit faire ceci : monDocument=thisComponent lesFeuilles=monDocument.Sheets maFeuille = lesFeuilles.getByName(feuille1) maPageDessin = maFeuille.DrawPage leFormulaire = maPageDessin.Forms.getByName(form1) laCac = leFormulaire.getByName(case1) Pour savoir si la case est cochée ou non, on regarde laCac.state qui est FALSE ou TRUE. En espérant que ça aide à démarrer. Agnès S. Bonjour Agnès et merci de ta réponse. Les 200 cases à cocher j'envisage de les créer tout simplement par des copier/coller en mode création de formulaire, mais justement, le but de la macro s'est d'éviter de les reprendre une à une pour les renommer et changer la cellule liée. Ton code fonctionne. J'avais bien testé le DrawPage et Forms mais je n'avais pas trouvé la bonne syntaxe. Je renonce aux explications. Mais je commence à avoir un doute sur la faisabilité de la chose. En effet il ne faut pas tester si la case est cochée ou pas, mais trouver les coordonnées de la case qui a le focus, vu qu'elles auront toutes le même nom. J'ai bien vu des méthodes qui parlent de listening pour le Form, mais rien compris à compris à comment on exploite ça et si même ça correspond à ce que je veux. Nicole. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Calc et case à cocher pour une nulle
nimel a écrit : Agnès Simonet a écrit : nimel a écrit : Bonjour, Ben non décidément je dois pas être douée, rien à faire je n'arrive pas à progresser avec l'API, malgrès Xray et les différentes doc. Dès que je crois comprendre et que je tente une solution ça ne marche pas. Les exemples que j'ai eu je ne les comprend pas, il y a des histoires d'haricots (beans) que je ne trouve expliquées nulle part ! Mon but ultime : Dans une feuille Calc, il y a une case à cocher par ligne. Chaque ligne contient de multiples données réparties sur plusieurs colonnes. Quand l'utilisateur coche la case, il faut que la cellule adjacente se remplisse avec oui et que le texte de la ligne concernée devienne rouge. Je suis d'accord que je pourrais le faire rien qu'avec le contrôle de la cac et du formatage conditionnel. Mais le soucis c'est qu'il y a plus de 200 lignes à faire et à priori on ne peux pas faire des copier/coller relatifs avec des éléments de formulaire ! J'ai donc pensé qu'il était plus judicieux se baser sur la position du focus au moment où on coche la case. Bonjour Agnès et merci de ta réponse. J'aime bien les petits problèmes comme ça, donc je poursuis mes recherches. Les 200 cases à cocher j'envisage de les créer tout simplement par des copier/coller en mode création de formulaire, mais justement, le but de la macro s'est d'éviter de les reprendre une à une pour les renommer et changer la cellule liée. Tu peut les renommer par macro : ' Renommer les controles 'recupérer les controles formEnum = leFormulaire.createEnumeration indicenom = 1 while formEnum.HasMoreElements leCtrl=formEnum.NextElement print nom d'origine : leCtrl.Name 'changer leur nom indicenom = indicenom +1 nomCtrl = caseLTrim( Str(indicenom) ) leCtrl.Name= nomCtrl print nouveau nom : leCtrl.Name wend Si la première case à cocher est à la ligne 5 par exemple, il pourrait être astucieux d'initialiser indicenom à 4 comme ça le nom reflètera le numéro de ligne. Mais je commence à avoir un doute sur la faisabilité de la chose. En effet il ne faut pas tester si la case est cochée ou pas, mais trouver les coordonnées de la case qui a le focus, vu qu'elles auront toutes le même nom. Maintenant qu'on a des noms différents, on peut trouver la ligne comme ça : ' Chercher le n° de ligne du controle case3 de la page de dessin for i = 0 to maPageDessin.count-1 if maPageDessin.getbyIndex(i).control.name = case3 then print ligne : maPageDessin.getbyIndex(i).anchor.cellAddress.Row exit for end if next i En fait il ne reste plus qu'à savoir trouver quel est la case à cocher qui a déclenché la macro. Je cherche. Agnès S. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Calc et case à cocher pour une nulle
Bonjour En fait il ne reste plus qu'à savoir trouver quel est la case à cocher qui a déclenché la macro. Je cherche. tu peux ecrire la macro comme sub macroDeclenche(event) end sub l'argument event contient l'evenement declencheur event.source contient l'objet appelant Bon courage laurent - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
[prog] Re: Calc et case à cocher pour une null e
Agnès Simonet a écrit : nimel a écrit : Agnès Simonet a écrit : nimel a écrit : Bonjour, Ben non décidément je dois pas être douée, rien à faire je n'arrive pas à progresser avec l'API, malgrès Xray et les différentes doc. Dès que je crois comprendre et que je tente une solution ça ne marche pas. Les exemples que j'ai eu je ne les comprend pas, il y a des histoires d'haricots (beans) que je ne trouve expliquées nulle part ! Mon but ultime : Dans une feuille Calc, il y a une case à cocher par ligne. Chaque ligne contient de multiples données réparties sur plusieurs colonnes. Quand l'utilisateur coche la case, il faut que la cellule adjacente se remplisse avec oui et que le texte de la ligne concernée devienne rouge. Je suis d'accord que je pourrais le faire rien qu'avec le contrôle de la cac et du formatage conditionnel. Mais le soucis c'est qu'il y a plus de 200 lignes à faire et à priori on ne peux pas faire des copier/coller relatifs avec des éléments de formulaire ! J'ai donc pensé qu'il était plus judicieux se baser sur la position du focus au moment où on coche la case. Bonjour Agnès et merci de ta réponse. J'aime bien les petits problèmes comme ça, donc je poursuis mes recherches. Les 200 cases à cocher j'envisage de les créer tout simplement par des copier/coller en mode création de formulaire, mais justement, le but de la macro s'est d'éviter de les reprendre une à une pour les renommer et changer la cellule liée. Tu peut les renommer par macro : ' Renommer les controles 'recupérer les controles formEnum = leFormulaire.createEnumeration indicenom = 1 while formEnum.HasMoreElements leCtrl=formEnum.NextElement print nom d'origine : leCtrl.Name 'changer leur nom indicenom = indicenom +1 nomCtrl = caseLTrim( Str(indicenom) ) leCtrl.Name= nomCtrl print nouveau nom : leCtrl.Name wend Si la première case à cocher est à la ligne 5 par exemple, il pourrait être astucieux d'initialiser indicenom à 4 comme ça le nom reflètera le numéro de ligne. Mais je commence à avoir un doute sur la faisabilité de la chose. En effet il ne faut pas tester si la case est cochée ou pas, mais trouver les coordonnées de la case qui a le focus, vu qu'elles auront toutes le même nom. Maintenant qu'on a des noms différents, on peut trouver la ligne comme ça : ' Chercher le n° de ligne du controle case3 de la page de dessin for i = 0 to maPageDessin.count-1 if maPageDessin.getbyIndex(i).control.name = case3 then print ligne : maPageDessin.getbyIndex(i).anchor.cellAddress.Row exit for end if next i En fait il ne reste plus qu'à savoir trouver quel est la case à cocher qui a déclenché la macro. Je cherche. Agnès S. STOP - STOP - STOP - STOP - STOP - STOP - STOP - STOP - STOP Merci beaucoup beaucoup et même très beaucoup Agnès mais je ne demandais pas à ce qu'on me fasse le script ! Je cherchais surtout à comprendre ce que je fais et là je comprend pas tout. Du moins ça me demanderait trop de dispo pour creuser la chose, vu l'hermétisme de l'API, même avec Xray. Si à chaque foi que je cherche un objet il faut que je demande sur le forum je suis pas arrivée !!! J'abandonne cette idée vu que pour un truc que je pensais simple au départ ça commence à ressembler à une usine à gaz. Je fais ça bénévolement pour une asso et je ne peux pas y passer trop de temps, surtout qu'il n'y a pas que ça à macrotiser (j'ai peur !). L'utilisateur voulait des cases à cocher, et bien tant pis, il aura des 0 et des 1 à saisir. Pour la suite je vais essayer de faire avec uniquement ce qu'il y a de décrit dans le tuto de Bernard Marcelly, je n'ai malheureusement pas les moyens d'acheter le bouquin. Merci encore. Nicole de Bordeaux. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Calc et case à cocher pour une nulle
Laurent Godard a écrit : Bonjour En fait il ne reste plus qu'à savoir trouver quel est la case à cocher qui a déclenché la macro. Je cherche. tu peux ecrire la macro comme sub macroDeclenche(event) end sub l'argument event contient l'evenement declencheur event.source contient l'objet appelant Bon courage laurent Merci Laurent, c'est ce que je ne savais pas. Agnès S. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Re: Calc et case à cocher pour une nulle
nimel a écrit : STOP - STOP - STOP - STOP - STOP - STOP - STOP - STOP - STOP Désolée, mais c'est fait, grâce à l'aide de Laurent Godard. http://agnooo.free.fr//pluxml/data/documents/pb/nimel/calc_cac_1.ods Merci beaucoup beaucoup et même très beaucoup Agnès mais je ne demandais pas à ce qu'on me fasse le script ! Je cherchais surtout à comprendre ce que je fais et là je comprend pas tout. Pour être honnête moi aussi je ne comprends pas tout ! Mais c'est en faisant ou en étudiant des macros que je progresse dans la compréhension. Du moins ça me demanderait trop de dispo pour creuser la chose, vu l'hermétisme de l'API, même avec Xray. Si à chaque foi que je cherche un objet il faut que je demande sur le forum je suis pas arrivée !!! Il ne faut jamais hésiter à demander sur le forum, même pour les choses les plus triviales. Il est là pour ça ! J'abandonne cette idée vu que pour un truc que je pensais simple au départ ça commence à ressembler à une usine à gaz. Je fais ça bénévolement pour une asso et je ne peux pas y passer trop de temps, surtout qu'il n'y a pas que ça à macrotiser (j'ai peur !). L'utilisateur voulait des cases à cocher, et bien tant pis, il aura des 0 et des 1 à saisir. Je comprends. Mais en fait ton problème n'était pas particulièrement simple à réaliser, en tout cas pour un débutant. Pour la suite je vais essayer de faire avec uniquement ce qu'il y a de décrit dans le tuto de Bernard Marcelly, je n'ai malheureusement pas les moyens d'acheter le bouquin. Tu peux utiliser le document d'Andrew Pitonyak traduit en français : http://fr.openoffice.org/Documentation/Guides/Andrew5.pdf C'est un peu pagaillou mais ça te donne des techniques même si tu ne comprends pas tout. Agnès S. - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org
Re: [prog] Problème pour exporter en pdf en python.
Merci pour ces précisions. Les différents essais que j'ai fait avec la méthode ci dessous n'ont pas encore portés leurs fruits mais, par contre, le lien m'a permis de découvrir d'autres exemples que je n'avais jamais vus (il faut dire que je cherchais surtout dans les pages francaises) J'ai ainsi pu progresser considérablement dans la compréhension de l'API et réussir des choses que je cherchais depuis très longtemps comme ouvrir une boite de dialogue, encadrer une cellule ou faire fonctionner correctement les boutons avec python dans un formulaire. J'ai également beaucoup progressé dans le SQL en trouvant la référence pour OOo. J 'ai encore du boulot pour arriver à faire tout ce que je faisais dans access (en terme d'interface utilisateur parce que pour le reste, python c'est quand même autre chose que visual basic) mais là je dois dire que j'ai fais des pas de géant et je vous en remercie. Le 04/03/2010 23:06, Didier Dorange-Pattoret a écrit : Bonjour, On trouve cela : /def createPropertyValue( cName=None, uValue=None, nHandle=None, nState=None ): Create a com.sun.star.beans.PropertyValue struct and return it. oPropertyValue = createUnoStruct( com.sun.star.beans.PropertyValue ) if cName != None: oPropertyValue.Name = cName if uValue != None: oPropertyValue.Value = uValue if nHandle != None: oPropertyValue.Handle = nHandle if nState != None: oPropertyValue.State = nState return oPropertyValue / Ici :http://www.oooforum.org/forum/viewtopic.phtml?t=3451 jean trantecisse a écrit : Merci laurent, je n'avais pas vu la subtilité. Mais mon problème vient surtout, je pense, que je n'arrive pas à créer propfich(). comme dans la ligne ci dessous Dim propfich(0) as New com.sun.star.beans.PropertyValue Je n'ai jamais pu trouver la syntaxe python pour remplacer Dim ... as New Je n'arrive pas à rattacher PropertyValue à quelque chose car j'ai toujours une erreur ou un objet None qui n'accepte pas Name et Value donc, je ne peux pas écrire les deux lignes suivantes car propfich()n'existe pas. propfich(0).Name = FilterName propfich(0).Value = calc_pdf_Export - To unsubscribe, e-mail: prog-unsubscr...@fr.openoffice.org For additional commands, e-mail: prog-h...@fr.openoffice.org