[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 !
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

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

Message par Whiteneck »

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

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.
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

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

Message par Piaf »

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

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
Whiteneck
Membre hOOnoraire
Membre hOOnoraire
Messages : 159
Inscription : 20 janv. 2013 11:19

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

Message par Whiteneck »

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

Code : Tout sélectionner

If ThisComponent.currentSelection.AbsoluteName= ThisComponent.sheets.getByName("FEUILLE").getCellRangeByName("CELLULE").AbsoluteNameThen
End If
et pourquoi ceci ?

Code : Tout sélectionner

If oEv.supportsService("com.sun.star.table.Cell") then
Bonne fin de journée
LibreOffice Version : 6.3.6.2 (x64) / Windows 8.1
Piaf
GourOOu
GourOOu
Messages : 5622
Inscription : 25 nov. 2011 18:07
Localisation : Guyane

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

Message par Piaf »

Re

Code : Tout sélectionner

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

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

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: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64