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 = "case"<rim( 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