[Issue][Calc] Fonction pour écrire dans une cellule distante

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 !
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

[Issue][Calc] Fonction pour écrire dans une cellule distante

Message par zeguedon »

Bonjour,

La section tableur regorge de questions du type : comment faire pour écrire X ou Y en A1 si je mets ceci cela en B1. Bien entendu, vous connaissez la réponse :)

Suite à ce fil : https://forum.openoffice.org/fr/forum/v ... =8&t=46016 je me suis amusé à faire des expériences (que je voulais plus élaborées) dont voici le fruit :

Une petite fonction que l'on appelle directement à partir d'une cellule comme toutes les fonctions Calc. Elle permet d'écrire un texte, une formule , une valeur, une formule calculée dans une cellule distante.
Elle permet aussi d'effacer à distance le contenu d'une cellule, directement ou sous condition, sans qu'il n'existe de lien entre les deux cellules. C'est un peu comme si on pouvait piloter à distance un tableau indépendant.

En A1 par exemple

Code : Tout sélectionner

=ECRIRDANS("G1";70)

Code : Tout sélectionner

SI(D1=6;ECRIRDANS("B2";"OK");ECRIRDANS("C27";"A voir"))
 Ajout : Pour effacer du contenu, il faut saisir une espace entre les deux doubles quottes

Code : Tout sélectionner

=ECRIRDANS("A1";" ")
 
Après on peu faire plein de truc bizarres, genre demander à une cellule d’écrire un truc dans une autre sous condition, puis demander à une autre d'effacer celle qui a demandé d'écrire un truc lorsque le truc est écrit. En gros on efface les traces.
J'ai constaté aussi qu'elle permet d'interdire l'effacement du contenu d'une cellule, que ce soit par la touche Del, la flèche gauche ou la touche entrée.
Il faut deux formules pour le faire :
en A1 :

Code : Tout sélectionner

=SI(ESTVIDE(D1);1;"")
En A2:

Code : Tout sélectionner

=SI(A1=1;ECRIRDANS("D1";50)
Voilà, à utiliser avec précaution mais à bon escient. Apparemment ne fonctionne pas avec AOO.

Code : Tout sélectionner

Function ECRIRDANS(arg1 As string, arg2 As variant) As string
    If IsNumeric(arg2)  then
    	ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(arg1).Value = arg2   
    Else
    	ThisComponent.CurrentController.ActiveSheet.getCellRangeByName(arg1).String = arg2
    End If
    end Function
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc]Fonction pour écrire dans une cellule distante

Message par bm92 »

Bonjour,

Je me suis amusé à faire :
Cellule E3 contient : G3
Cellule A3 contient : =ECRIRDANS(E3;95123)
Avec LibreOffice, j'écris bien dans la cellule G3.
Ensuite je change le contenu de la cellule E3
Cellule E3 contient : A3
La modification de E3 active la formule... qui se détruit dans la cellule A3.
zeguedon a écrit :Apparemment ne fonctionne pas avec AOO.
N'a jamais fonctionné avec OpenOffice.org et Apache OpenOffice. C'est donc une incompatibilité de plus introduite par LibreOffice...

Cependant, on ne peut toujours pas modifier le formatage de la cellule par une fonction. Même avec LibreOffice, pour le moment.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25169
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc]Fonction pour écrire dans une cellule distante

Message par Dude »

Salut,
bm92 a écrit :N'a jamais fonctionné avec OpenOffice.org et Apache OpenOffice.
Rapport 31627 classé sans suite.
Le développeur de l'époque invoque qu'une fonction utilisée dans une formule peut être appelée lors du rafraichissement de la feuille pour obtenir son résultat et ne pas pouvoir ensuite modifier cette feuille.
zeguedon
ManitOOu
ManitOOu
Messages : 3031
Inscription : 02 juil. 2014 17:25

Re: [Calc]Fonction pour écrire dans une cellule distante

Message par zeguedon »

bm92 a écrit :La modification de E3 active la formule... qui se détruit dans la cellule A3.
J'avais essayé l'autodestruction directe aussi mais si on fait annuler>saisie avec la flèche à gauche du pinceau, au bout de la deuxième fois Libo ferme sans sommations.
On ne peut pas non plus lui demander d'écrire une formule, elle le fait, mais elle ne s'active pas, même après avoir ressaisi le signe égal. Il faut supprimer le formatage direct.
bm92 a écrit :Cependant, on ne peut toujours pas modifier le formatage de la cellule par une fonction.
Effectivement j'avais constaté et on ne peut pas non plus appeler une macro qui insérerait une ligne par exemple. Mais je vais continuer à faire mumuse pour voir si je peux l'améliorer.
Comment baliser [Résolu] ?
AOO
LibreOffice
Sous Linux