Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Via le nom d'une cellule, je voudrais qu'une macro ne s'exécuter que lorsque la cellule active est bien la cellule que j'ai nommée.
J'ai pensé, naïvement , faire quelque chose du genre :
If ThisComponent.currentSelection.Name = ThisComponent.sheets.getByName("FEUILLE").getCellRangeByName("CELLULE").Name Then
End If
Mais "Name" ne correspond apparemment à rien.
Je n'ai pas trouvé comment récupérer le nom que j'ai donné à la cellule pour le comparer avec celui de la cellule active.
Merci
Dernière modification par Whiteneck le 04 mai 2018 13:12, modifié 1 fois.
Sub Main(oEv as Object)
Dim oDoc as Object, maFeuille as Object, maCellule as Object
oDoc = thisComponent
maFeuille = oDoc.CurrentController.ActiveSheet
MaCellule = maFeuille.getCellRangeByName("CELLULE")
If oEv.supportsService("com.sun.star.table.Cell") then
If oEv.AbsoluteName = maCellule.AbsoluteName Then
'Ta procédure ici
maFeuille.getCellRangeByName("C3").Value = 10
End If
End If
End Sub
A+
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
Quel est le déclencheur de la procédure ?
Il te faut un déclencheur pour que la procédure soit exécutée.
Dans l'exemple, le déclencheur est le changement de sélection.
Maintenant tu peux très bien raccourcir
Sub Main(oEv as Object)
If oEv.supportsService("com.sun.star.table.Cell") then
If oEv.AbsoluteName = ThisComponent.sheets.getByName("FEUILLE").getCellRangeByName("CELLULE").AbsoluteName Then
'Ta procédure ici
ThisComponent.sheets.getByName("FEUILLE").getCellRangeByName("C3").Value = 10
End If
End If
End Sub