petit souci de compréhension quand à ce qui se passe lorsqu'on rattache une macro à un évènement de type "sélection modifiée" ...
Ça devient vite le why sur la feuille de calcul, où tel que j'ai "codé", ne serait-ce qu'un mouvement de souris me rappelle la macro.
En outre, je remarque que malgré mes tentatives de ne pas passer plusieurs fois dans la procédure pour un même évènement, rien n'y fait.
Alors dit comme ça c'est très vague mouaih

Le but ultime est de détecter lorsque l'utilisateur (moua) sélectionne un plage de cellule nommée, en passant par la liste de sélection de plage à gauche de la barre de formule, là où sont enregistrées les plages nommées.
Mais déjà je voudrais un code propre qui quitte au premier passage dès lors que la sélection ne concerne pas la plage que je cible, et qui quitte aussi en cas de plage cible sélectionnée (la nommée) , après petit traitement (sans repasser car je sais que la procédure est appelé plusieurs fois et je ne me l'explique pas).
Voici le code:
Code : Tout sélectionner
dim last_selected as string
Sub Main (evt as object)
if not evt.SupportsService("com.sun.star.table.CellProperties") then exit sub
msgbox "evt: " & evt.absolutename & " last_selected: " & last_selected
If evt.absolutename = last_selected Then
exit sub ' Ignorer si la même cellule est sélectionnée
else
msgbox "visiblement ils étaient différents: " & last_selected & " tandis que evt: " & evt.absolutename
last_selected = evt.absolutename
End If
dim what, sowhat as string
what = evt.absolutename
msgbox " what : " & what
sowhat = getnamedrangebyname("made_of_sand").content
if what = sowhat then
msgbox "made_of_sand sélectionné"
else
exit sub
end if
End Sub
Function GetNamedRangeByName(rangeName As String) As Object
Dim oDoc As Object
Dim oNamedRanges As Object
Dim oNamedRange As Object
' Accéder au document et à la collection des plages nommées
oDoc = ThisComponent
oNamedRanges = oDoc.NamedRanges
' Vérifier si la plage nommée existe
If oNamedRanges.hasByName(rangeName) Then
oNamedRange = oNamedRanges.getByName(rangeName)
GetNamedRangeByName = oNamedRange ' Retourner l'objet plage nommée
Else
GetNamedRangeByName = Null ' Retourner Null si la plage n'existe pas
End If
End Function
