nouveau sur ce forum, et également nouvel utilisateur de open office, j'essaye de m'adapter au changement Excel - Calc, en ce qui concerne les macros. Bref j'aimerais lorsque je clic sur une cellule ouvrir une boite de dialogue. Avec un peu de recherche et beaucoup de réflexion j'ai trouvé le code qui me permet de faire ceci, en utilisant un listener, le voici:
- Code: Tout sélectionner AgrandirRéduire
Option Explicit
Global PysDocView as object, PysListener as object
sub PysListenerAdd
PysDocView = ThisComponent.getCurrentController
PysListener = createUnoListener("Pys_","com.sun.star.view.XSelectionChangeListener")
PysDocView.addSelectionChangeListener(PysListener)
end sub
' Procédure pour arrêter le traitement
sub PysListenerRemove
if not(isnull(PysListener)) then
PysDocView.removeSelectionChangeListener(PysListener)
end if
end sub
' Procédure appelée par l'événement "arrêt du listener".
' Nécessaire même si ne fait rien
sub Pys_disposing(PysListener)
'******************************
end sub
' Procédure déclenchée quand changement de sélection
Sub Pys_selectionChanged(PysListener)
Dim PysEnCours as object
PysEnCours = thiscomponent.currentselection
' Si la sélection courante est une cellule ou une plage
if PysEnCours.supportsService("com.sun.star.table.Cell") then
call dialog1initialize
end if
End Sub
Ce code fonctionne bien seulement il déclenche l'évènement sur le clic de n'importe quel cellule de la feuille. En fait je voudrais déclencher l'évènement uniquement sur les cellules d'une plage nommée, par exemple "essai", ou d'une plage tout court exemple "B2:M30".
Comment faire?
Merci de votre Aide
EDIT: J'ai lu beaucoup de post sur ce forum à propos des listener mais j'ai pas trouvé comment définir uniquement le déclenchement sur une plage nommée... Est-ce que j'ai mal cherché?
EDIT: J'ai lu le message ci-dessous mais je vois pas trop ou j'ai inventé, j'ai oublié une majuscule
Le Modérateur a écrit:Merci de ne pas inventer et de respecter la syntaxe des balises : ftopic1369.html
Le balisage doit bien sûr être correctement orthographié (première lettre en majuscule puis le reste en minuscules).


