Re: [prog] Re: Calc et case à cocher pour une nulle

2010-05-04 Par sujet Agnès Simonet

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

2010-05-04 Par sujet Laurent Godard

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



Re: [prog] Re: Calc et case à cocher pour une nulle

2010-05-04 Par sujet Agnès Simonet

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

2010-05-04 Par sujet Agnès Simonet

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