[Résolu][Calc]Renvoie le nom de la cellule active

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: 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 !

[Résolu][Calc]Renvoie le nom de la cellule active

Messagepar Whiteneck » 04 Mai 2018 10:35

Bonjour, :D

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 :roll: , faire quelque chose du genre :

Code : Tout sélectionner   AgrandirRéduire
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 édition par Whiteneck le 04 Mai 2018 14:12, édité 1 fois.
LibreOffice Version: 5.3.7.2 (x64) / Windows 8.1
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 113
Inscrit le : 20 Jan 2013 12:19

Re: [Calc]Renvoie le nom de la cellule active

Messagepar Piaf » 04 Mai 2018 12:09

Bonjour
Tu disposes de l'événement de feuille Sélection modifiée.
En utilisant cet événement, ceci devrait le faire
Code : Tout sélectionner   AgrandirRéduire
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: 5.4.7 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5357
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane

Re: [Calc]Renvoie le nom de la cellule active

Messagepar Whiteneck » 04 Mai 2018 14:10

Merci Piaf. :super:
Cela fonctionne mais saurais-tu m'expliquer pourquoi ne pas écrire ceci ? :

Code : Tout sélectionner   AgrandirRéduire
If ThisComponent.currentSelection.AbsoluteName= ThisComponent.sheets.getByName("FEUILLE").getCellRangeByName("CELLULE").AbsoluteNameThen
End If


et pourquoi ceci ?

Code : Tout sélectionner   AgrandirRéduire
If oEv.supportsService("com.sun.star.table.Cell") then


Bonne fin de journée
LibreOffice Version: 5.3.7.2 (x64) / Windows 8.1
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 113
Inscrit le : 20 Jan 2013 12:19

Re: [Résolu][Calc]Renvoie le nom de la cellule active

Messagepar Piaf » 04 Mai 2018 17:16

Re
Code : Tout sélectionner   AgrandirRéduire
If ThisComponent.currentSelection.AbsoluteName=
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
Code : Tout sélectionner   AgrandirRéduire
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
Code : Tout sélectionner   AgrandirRéduire
If oEv.supportsService("com.sun.star.table.Cell")
Limite l'exécution de la procédure à la sélection d'une seule cellule.
A+
Libre Office Version: 5.4.7 et Apache OpenOffice 4.1.5 Sur Xubuntu 18.04 AMD64
Piaf
GourOOu
GourOOu
 
Message(s) : 5357
Inscrit le : 25 Nov 2011 19:07
Localisation : Guyane


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)