Une fonction dépendante de la feuille

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Une fonction dépendante de la feuille

Message par kobold »

Bonjour,

J'ai un fichier tableur contenant 36 feuilles
je voudrais appeler une fonction sur une cellule qui dépend de la feuille.

Pour faire simple chaque feuille appelle une cellule différente appartenant à la première feuille.

je n'arrive pas à effectuer un copier/coller pour aller plus vite
(la cellule n'est pas modifiée en fonction de la feuille)

J'ai donc décidé de passer par la fonction feuille()

Mais je ne peux pas nommer une celulle au travers d'une fonction (tout au moins, je n'y arrive pas)

je voudrais appeller une cellule du genre
=A1 sur la feuille 1
=A2 sur la feuille 2
etc ...

donc je voudrais donc utiliser un truc du genre

=A(feuille())



Avez vous une solution à me proposer.

Merci
Linux / Mandriva 2007
OOo 2.0.4
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Message par Jeff »

Bonjour et bienvenue,

Tout d'abord, tu devrai renseigner précisément ta version d'OOo ; on est à la version 2 depuis...la 2 puis 2.0.1, 2.0.2,2.0.3,2.0.4 et la toujours en version 2 avec la 2.1 (site officiel de téléchargement : http://fr.openoffice.org/about-downloads.html)
Pour renseigner précisement ta version : http://user.services.openoffice.org/fr/ ... 41.html#41 à lire jusqu'au bout :mrgreen:

Concernant ta question, tes cellules sur ta première feuille sont donc (j'imagine) adjacentes, as-tu été voir du côté d'une fonction INDIRECT, peut être, ça peut être une piste...

A +
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Message par kobold »

Pour décrire mon prjet, je vais dire que c'est la gestion des notes d'un bac blanc

la première page regroupe toutes les notes et applique des coef pour calculer la moyenne.
Les pages suivantes décomposent les résultats élève par élève, de façon à imprimer une feuille par élève avec ses résultats individuels, et à leur donner leur résultat potentiel au bac.

Voilà.

Sinon qu'appelle tu des fonctions indirect ?

PS : je ne suis pas un blaireau , mais je n'ai jamais touché au starbasic (mais je connais les bases de la programmaytion dans d'autre langage si besoin)
Linux / Mandriva 2007
OOo 2.0.4
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Message par Jeff »

C'est LA (ou THE pour parler jeune) fonction INDIRECT, qui est souvent combinée avec une fonction ADRESSE pour "générer" des adresses de cellules (tape dans l'aide d'OOo Calc indirect puis sélectionne Fonctions de classeur pour suivre cette idée).

Sinon, si ton fichier n'est pas confidentiel (ou si tu modifie tous les éléments confidentiels) tu as, sur ce forum, la possibilité de joindre un fichier (Ci-Joint est sous la bannière du forum, n'oublie pas de copier/coller le lien de Ci-Joint dans ton post en réponse).

Vu ce que tu décris dans ton premier post, en "tirant" la poignée de recopie tu n'obtiens pas le résultat désiré :
- maitrises-tu les référence relatives et absolues ? (désolé si la question parait stupide, mais j'ai aucune idée de ce que tu sais :) )
- les cellules de ta première page où tu veux piocher sont elles les unes en dessous des autres ?
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Message par kobold »

La fonction ADRESSE me rend bien service, c'est magnifique.
Bon j'ai encore un soucis.

La fonction que j'utilise était :

=SI(ESTVIDE($Bac_blanc1.A4);"";$Bac_blanc1.A4)

elle devient :

=SI(ESTVIDE(ADRESSE(FEUILLE();1;;1));"";ADRESSE(FEUILLE();1;;1))

Mon soucis actuel vient du fait que cette formule n'affiche pas le contenu de la cellule : ADRESSE(FEUILLE();1;;1)
mais son nom : 1.$A$3

Je pense qu'il doit y avoir un truc. Mais j'avoue que là, même avec la fonction INDIRECT j'ai pas réussi.

Pour répondre à tes quetsions : oui je maîtrise les liens absolus et relatifs
Le fichier est disponible ici
http://kobold.myftp.org/download/lycee/ ... lanc02.ods
Linux / Mandriva 2007
OOo 2.0.4
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Bonjour

Pour obtenir le contenu d'une cellule dont on passe les références :

Code : Tout sélectionner

=CELLULE("contents";A1)
Sinon, la syntaxe pour ADRESSE est :

Code : Tout sélectionner

ADRESSE(Ligne;Colonne;ABS;Feuille)
où Feuille représente le nom de la feuille. Il doit être placé entre guillemets.
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Message par kobold »

il y a un truc qui cloche.... mais quoi ?

=SI(ESTVIDE(ADRESSE(FEUILLE();1;;1));"";ADRESSE(FEUILLE();1;;1))

me renvoi
1.$A$3

donc j'ai utilisé la fonction CELLULE

=SI(ESTVIDE(ADRESSE(FEUILLE();1;;1));"";CELLULE("contents";ADRESSE(FEUILLE();1;;1)))

mais ici; ça me renvoi
#REF

Ce qui fonctionne avec la fonction ESTVIDE ne fonctionne pas avec la fonction CELLULE

edit :

j'ai la solution... la fonction INDIRECT

=SI(ESTVIDE(ADRESSE(FEUILLE();1;;1));"";INDIRECT(ADRESSE(FEUILLE();1;;"bac_blanc1")))

me renvoi le bon résultat

merci de votre aide.



J'ai du faire une erreur, mais je ne vois pas où.
merci de votre aide
Linux / Mandriva 2007
OOo 2.0.4
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Message par kobold »

Bon à force de bidouille je m'en suis sorti.
Mais les formules deviennnt si complexe qu'on fait vite des erreurs.
je vous remerci e de votre aide.
Dernière modification par kobold le 24 janv. 2007 10:34, modifié 1 fois.
Linux / Mandriva 2007
OOo 2.0.4
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Message par Pierre-Yves Samyn »

Re...

A priori, c'est ici qu'intervient de nouveau INDIRECT, par exemple

Code : Tout sélectionner

=ESTVIDE(INDIRECT(ADRESSE(1;1;0;"Feuille1")))
EDIT après coup : mystère des flus RSS ? bien qu'ayant rafraîchi les entrées, et prévisualisé les messages avant de poster, ton message de résolution ne m'apparaissait pas, d'où ce dernier post qui est donc "après la bataille".

Le principal est que la question soit résolue :)
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Message par kobold »

non, justement j'ai essay"é la fonction estvide sur un valeur transmise via indirect et ça donne rien.

j'ai me suis débrouillé avec un =0
mais du coup je ne fais plus la différence entre pas de note et 0
ce qui est génant.


--

edit : je dis des bétises parce que je vais trop vite en besogne, je suis en trainde faire des tests, il y a des choses étrange... mais la fonction estvide fonctionne
l'erreur venait de moi
Linux / Mandriva 2007
OOo 2.0.4
Jeff
GourOOu
GourOOu
Messages : 9629
Inscription : 18 sept. 2006 09:40
Localisation : France

Message par Jeff »

Bonsoir,
kobold a écrit :il y a un truc qui cloche.... =SI(ESTVIDE(ADRESSE(FEUILLE();1;;1));"";ADRESSE(FEUILLE();1;;1))
Ce qui cloche c'est peut être ces 2 points-virgule à la suite...
kobold
Fraîchement OOthentifié
Messages : 7
Inscription : 23 janv. 2007 21:17

Message par kobold »

Non les deux points virgules sont corrects, c'est parce qu'il existe un valeur par défaut abs qu'on est pas oblgé inclure dans la formule.

En fait j'ai des formules assez complexes et au bout d'une moment on a du mal à prendre du recul sur l'écran.

Bref au final j'ai résolu quasiment tous mes problèmes.
Ceux qui me restent sont d'ordre conceptuel et plus sur le plan des formules.

Le fichier qui est sur mon serveur et le fichier tel que je l'ai finalisé.

Il ne me reste plus qu'à traiter le cas des option, mais là faut que je réfléchisse.

je vais ouvrir un autre fil pour une autre question.
Linux / Mandriva 2007
OOo 2.0.4
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

Message par Dude »

kobold a écrit :En fait j'ai des formules assez complexes et au bout d'une moment on a du mal à prendre du recul sur l'écran.
Si je peux me permettre un conseil : tu peux éclater ta formule sur plusieurs cellules et les masquer ensuite.
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues