[Résolu][Calc]Coordonnées d'une cellule

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 !
Claudie-Def
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 14 oct. 2016 11:51

[Résolu][Calc]Coordonnées d'une cellule

Message par Claudie-Def »

Bonjour,
j'ai une belle petite fonction qui a besoin des coordonnées de la cellule d'où elle est appelée. J'ai mis

Code : Tout sélectionner

(colonne(A1) ; Ligne(A1)) 
en paramètres et ça marche très bien. Mais ce serait moins lourd à utiliser s'il était possible que la fonction récupère [sous la forme (nombre, nombre)], pas A1, les coordonnées de la cellule, un peu comme "ActiveSheet" retourne le n° de page.

Est-ce que ça existe ?

Merci d'avance, à plus dans l'bus
Dernière modification par micmac le 13 mars 2017 07:25, modifié 2 fois.
Raison : Balisage+verrouillage
libre office 5.2.1.2 windows 10
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25181
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Coordonnées d'une cellule

Message par Dude »

Claudie-Def a écrit :j'ai une belle petite fonction qui a besoin des coordonnées de la cellule d'où elle est appelée.
Tu récupères l'évènement et tu te sers de XRay.
Il suffit d'interroger la méthode getCellAdress.
La structure contient les propriétés Colonne (Column), Ligne (Row) et Feuille (Sheet) de la cellule.
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc]Coordonnées d'une cellule

Message par Churay »

Bonjour

Code : Tout sélectionner

Sub OuSuisJe
    MsgBox thisComponent.CurrentSelection.AbsoluteName
END SUB
ou

Code : Tout sélectionner

Sub OuSuisJe
Dim oRA, sMsg As String
	MsgBox thisComponent.CurrentSelection.AbsoluteName
	oRA = thisComponent.CurrentSelection.RangeAddress
	sMsg = "Feuille : " & oRA.Sheet & chr(10)
	sMsg = sMsg & "Colonne : " & oRA.EndColumn & chr(10)
	sMsg = sMsg & "Ligne : " & oRA.EndRow & chr(10)
	MsgBox sMsg
END SUB
ou pour le fun :

Code : Tout sélectionner

Sub OuSuisJe
Dim oConversion, sMsg As String
	oConversion = ThisComponent.createInstance("com.sun.star.table.CellAddressConversion")
	oConversion.Address = thisComponent.CurrentSelection.getCellAddress
	sMsg = oConversion.UserInterfaceRepresentation & chr(10) & chr(10) 
	With oConversion.Address
		sMsg = sMsg & "Feuille : " & .Sheet & chr(10) & "Colonne : " & .Column & chr(10) & "Ligne : " & .Row & chr(10)
	END With	
	MsgBox sMsg
End Sub
 Ajout : Edition pour une version plus compacte avec l'utilisation de com.sun.star.table.CellAddressConversion 
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
Claudie-Def
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 14 oct. 2016 11:51

Re: [Calc]Coordonnées d'une cellule

Message par Claudie-Def »

Bonjour,
merci pour ce ou-suis-je, (et dans quel état j'erre), il me retourne les cordonniers de la cellule occupée par le curseur, pas celles de la fonction qui l'utilise.
Mais je sens que la solution est proche.

On n'a jamais été aussi près du but.

à bientôt.
CD
libre office 5.2.1.2 windows 10
Avatar de l’utilisateur
Churay
ManitOOu
ManitOOu
Messages : 2668
Inscription : 30 avr. 2009 04:54
Localisation : CATALUNYA

Re: [Calc]Coordonnées d'une cellule

Message par Churay »

Bonjour
Claudie-Def a écrit :pas celles de la fonction qui l'utilise.
Mais je sens que la solution est proche.
Joindre ton fichier peut aider à accélérer l'obtention de la solution...
cOOordialement
---
AOO 4.0.1 W7-PRO & LO 5.1.6.2 Debian 7.8 & Ubuntu 16.04 LTS
---
F1 : ça aide...
XRay + SDK :super:
---
Quand le NOT CONFIRMED sera corrigé (OOo et LO) , je serai heureux...
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc]Coordonnées d'une cellule

Message par zeguedon »

Bonjour,
Churay a écrit :Joindre ton fichier peut aider à accélérer l'obtention de la solution...
Oui, si non il faut ajouter à ta fonction la formule :

Code : Tout sélectionner

ADRESSE(LIGNE();COLONNE())
ou créer une formule nommée par le menu Insertion>Nom>Définir et appeler cette formule dans ta fonction. Mais si c'est pour manipuler l'objet cellule que la fonction appelle utilisé par la fonction je te souhaite bien du courage.

A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
ThierryT
Membre enthOOusiaste
Membre enthOOusiaste
Messages : 467
Inscription : 10 nov. 2012 17:05

Re: [Calc]Coordonnées d'une cellule

Message par ThierryT »

Des fonctions basiques pour l'utilisation des lignes et colonnes avec leurs index au lieu de leurs noms respectifs.

Code : Tout sélectionner

' Retourne l'index d'une colonne de nom donné
'--------------------------------------------
Function IndexColonne(nom As String) As Long
	Dim uneCellule As Object
	On Error Goto IndexColonneError

	uneCellule = ThisComponent.Sheets(0).getCellRangeByName(nom &"1")
	IndexColonne = uneCellule.RangeAddress.StartColumn
	Exit Function

IndexColonneError:
	IndexColonne = -1
End Function

' Retourne l'index d'une ligne de nom donné
'------------------------------------------
Function IndexLigne (nom As String) As Long
	Dim uneCellule As Object
	On Error Goto IndexLigneError
	
	uneCellule = ThisComponent.Sheets(0).getCellRangeByName("A" & nom)
	IndexLigne = uneCellule.RangeAddress.StartRow
	Exit Function

IndexLigneError:
	IndexLigne = -1
End Function
LibreOffice 6.1.3.2 x64 / AOO 4.1.5 (x86) sous Windows 8.1 (x64)
Java 8.x (x64 et x86), Firefox, Thunderbird,....

“Celui qui aime à apprendre est bien près du savoir.” (Confusius)
Comment baliser Résolu
Claudie-Def
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 14 oct. 2016 11:51

Re: [Calc]Coordonnées d'une cellule

Message par Claudie-Def »

Bonjour,
ces différente formules donnent la cellule active, c.à-d. la position du curseur. Or il me faut les coordonnées de la cellules où se trouve la fonction sans avoir besoin de les mettre en paramètre.

Pour l'instant j'utilise :

Code : Tout sélectionner

MaFonction(Colonne(A1);Ligne(A1);...)
que je trouve encombrant.

Code : Tout sélectionner

MaFonction(1;0;...)
(si je suis sur la cellule A1)
marche aussi, mais si on cop-col la cellule, ça ne s'actualise pas.

Peut-être que ça n'existe pas, mais si ça existe, je ne serais pas seule à m'en servir.
bon vikenne et à lundi
Cl
libre office 5.2.1.2 windows 10
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc]Coordonnées d'une cellule

Message par zeguedon »

Bonjour,

Il me semble t'avoir répondu :
zeguedon a écrit :créer une formule nommée par le menu Insertion>Nom>Définir et appeler cette formule dans ta fonction.
la formule nommée à créer est :

Code : Tout sélectionner

ADRESSE(LIGNE();COLONNE();4)
Tu la nommes "Pos" par exemple comme Position et tu la passes en paramètre à ta fonction:

Code : Tout sélectionner

=MAFONCTION("tralala";Pos)

Code : Tout sélectionner

Sub MAFONCTION(Arg1,Agr2)
Print Arg2
End Sub

Quelle que soit la cellule dans laquelle tu saisis Pos (ou le passe en paramètre à ta fonction), tu récupères les références de la cellule qui contient Pos
A+
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9255
Inscription : 28 août 2010 08:45

Re: [Calc]Coordonnées d'une cellule

Message par micmac »

Bonjour,
Dernière connexion le : 17 Déc 2016 16:26
Vous avez lu semble t-il les réponses qui vous ont été faites sans y donner de suite.
N'ayant plus de nouvelles, on peut en déduire que le problème est résolu ou ne se reproduit pas.
  1. Merci de baliser par vous-même la prochaine fois.
  2. Un remerciement fait aussi plaisir aux bénévoles qui vous ont consacré de leur temps.
    La politesse fait également partie de la philosophie du logiciel libre.
  3. En cas d'erreur, contactez l'équipe de modération pour la réouverture du fil.
Sujet balisé [Résolu] et verrouillé.

Cordialement,
Touche Ctrl de Windows = touche cmd⌘ sur Mac
Outils > Options sur Windows = OpenOffice > Préférences sur Mac