[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 !

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

Messagepar zeguedon » 16 Jan 2015 06:14

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/viewtopic.php?f=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   AgrandirRéduire
=ECRIRDANS("G1";70)

Code : Tout sélectionner   AgrandirRéduire
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   AgrandirRéduire
=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   AgrandirRéduire
=SI(ESTVIDE(D1);1;"")

En A2:
Code : Tout sélectionner   AgrandirRéduire
=SI(A1=1;ECRIRDANS("D1";50)


Voilà, à utiliser avec précaution mais à bon escient. Apparemment ne fonctionne pas avec AOO.

Code : Tout sélectionner   AgrandirRéduire
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 4.1.3
LibreOffice 5.2.6.2
Debian (Jessie)
Avatar de l’utilisateur
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2541
Inscrit le : 02 Juil 2014 18:25
Localisation : Dans les Caraĩbes

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

Messagepar bm92 » 16 Jan 2015 12:27

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
bm92
ManitOOu
ManitOOu
 
Message(s) : 2562
Inscrit le : 26 Nov 2005 14:42

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

Messagepar Dude » 16 Jan 2015 14:38

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.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 19672
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

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

Messagepar zeguedon » 17 Jan 2015 03:17

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 4.1.3
LibreOffice 5.2.6.2
Debian (Jessie)
Avatar de l’utilisateur
zeguedon
ManitOOu
ManitOOu
 
Message(s) : 2541
Inscrit le : 02 Juil 2014 18:25
Localisation : Dans les Caraĩbes


Retour vers Macros et API

Qui est en ligne ?

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