[Résolu][Calc] Renvoi valeur d'une cellule sur autre feuille

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 !
Phi79
Fraîchement OOthentifié
Messages : 3
Inscription : 18 mars 2021 14:43

[Résolu][Calc] Renvoi valeur d'une cellule sur autre feuille

Message par Phi79 »


La modération vous a écrit: Titre modifié pour plus de clarté

Bonjour,
J'essaie de créer une macro pour renvoyer (par l'action d'un bouton) la valeur d'une cellule définie vers une autre feuille quand le pointeur est positionné à n'importe quel endroit sur cette ligne.
Je n'arrive pas à trouver (malgré mes recherches) la commande nécessaire qui renvoie cette position du pointeur.
Merci pour votre aide
LibreOffice 6.0.7
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] renvoyer la valeur d'une cellule sur autre feuill

Message par Dude »

Salut,

Ton exposé n'est pas clair.
Une cellule et un pointeur (dans une cellule) sont deux notions différentes.
Pour faciliter l'aide, il faut joindre :
  1. un document contenant les données anonymisées
  2. deux copies écran pour montrer la situation de départ et celle attendue
  3. une procédure pas-à-pas détaillée pour reproduire le problème
Merci de publier ces informations à la suite.
Phi79
Fraîchement OOthentifié
Messages : 3
Inscription : 18 mars 2021 14:43

Re: [Calc] Renvoi valeur d'une cellule sur autre feuille

Message par Phi79 »

Bonjour,

Pour être plus clair :

la ligne où est la cellule encadrée noire (dernier clic de la souris) (ligne 6, cellule B6) comporte les valeurs C, H et M.
Je veux qu'en cliquant sur un bouton de commande que j'aurai créé dans la barre des menus (exemple mon bouton "dernierelignetableau", que les valeurs de cette ligne (c'est à dire "C , H et M" ) soit copiées automatiquement dans un autre tableau sur une autre feuille.
Capture.JPG
Je recherche donc la commande qui permet de renvoyer les valeurs de la ligne contenant le dernier clic de la souris.

Dans l'attente de votre réponse
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice 6.0.7
Windows 10
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Renvoi valeur d'une cellule sur autre feuille

Message par joel275 »

Bonjour et bienvenue sur le forum,

le code suivant devrait répondre à ta question:

Code : Tout sélectionner

Sub Main
	doc = ThisComponent
	sel = doc.CurrentSelection
	if sel.supportsService("com.sun.star.table.Cell") then 
		coord = sel.CellAddress
		li = coord.Row
		source = doc.Sheets(0).getCellRangeByposition(0,li, 2,li)		'2 pour les 3° cellules; à modifier si besoin
		dest =  doc.Sheets(1).getCellRangeByposition(0,li, 2,li)
		dest.DataArray = source.DataArray
	else
		msgbox("sélectionnez une unique cellule")
	end if
End Sub
 Ajout : correction à 13h23 
A plus.
A jour de LibreOffice et de Ubuntu
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] Renvoi valeur d'une cellule sur autre feuille

Message par Dude »

A mon avis, ce n'est pas aussi simple. Mais comme l'auteur se contente d'envoyer une seule copie écran. :?
Pourquoi ne pas fournir l'intégralité de ce qui est demandé ?
Phi79 a écrit :renvoyer les valeurs de la ligne contenant le dernier clic de la souris.
Renvoyer où ? Copié, déplacé ? En tant que valeur ou référence ?
joel275
InconditiOOnnel
InconditiOOnnel
Messages : 839
Inscription : 10 janv. 2009 08:05

Re: [Calc] Renvoi valeur d'une cellule sur autre feuille

Message par joel275 »

Bonjour,
Dude a écrit :A mon avis, ce n'est pas aussi simple.
Sans doute, mais j'ai fait avec le peu d'informations données en espérant que ça serve de base au demandeur, ne serait-ce que pour mieux formuler sa demande :D

A plus.
A jour de LibreOffice et de Ubuntu
Phi79
Fraîchement OOthentifié
Messages : 3
Inscription : 18 mars 2021 14:43

Re: [Calc] Renvoi valeur d'une cellule sur autre feuille

Message par Phi79 »

Bonjour,
Merci pour ces réponses.
N'étant pas assez expérimenté dans la programmation, je n'arrive pas intégrer vos remarques dans mon programme.
Voici ma macro , je vois bien que c'est cette ligne qu'il faut modifier

args1(0).Value = "$F$450:$H$450"

je veux qu'au lieu de prendre les données de la ligne 450, que ce soit les données de la ligne ou j'ai positionné le pointeur qui soient prises.

mais je n'y arrive pas.

Pour que ce soit plus simple , j'ai pensé aussi à faire un bouton texte et rentrer le numéro de la ligne désirée. mais là aussi il faut l'intégrer dans la macro.
Merci pour vos suggestions à venir.


sub calculPE
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$450:$H$450"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 6

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$A$9"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())

rem ----------------------------------------------------------------------
dim args9(2) as new com.sun.star.beans.PropertyValue
args9(0).Name = "FontHeight.Height"
args9(0).Value = 16
args9(1).Name = "FontHeight.Prop"
args9(1).Value = 100
args9(2).Name = "FontHeight.Diff"
args9(2).Value = 0

dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args9())


end sub
LibreOffice 6.0.7
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] Renvoi valeur d'une cellule sur autre feuille

Message par Dude »

Phi79 a écrit :N'étant pas assez expérimenté dans la programmation, je n'arrive pas intégrer vos remarques dans mon programme.
De quelle remarque parles-tu ? joel275 te donne une macro prêt-à-l'emploi.
L'as-tu essayée ? :roll:

Dans le document ci-dessous, elle est branchée sur l'évènement de feuille "double clic cellule".
CopieLigne.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
rollmops
PassiOOnné
PassiOOnné
Messages : 669
Inscription : 20 déc. 2017 14:45

Re: [Calc] Renvoi valeur d'une cellule sur autre feuille

Message par rollmops »

Bonjour,
Phi79 a écrit : j'ai pensé aussi à faire un bouton texte et rentrer le numéro de la ligne désirée.
Tu n'as pas besoin d'une macro pour ça.
Dans la zone de nom, à la place de la référence de cellule, tu tapes la ligne où tu veux aller. :D

A+
OpenOffice 4.1.15 - Windows 10