Numbers - Base de donnée : nouvelle page => nouvelle ligne

GLeb

Nouveau membre
18 Octobre 2018
8
0
37
glebcreation.fr
Bonjour les amis,
Après une bonne prise de tête sur Numbers et les forums dédiés, je me tourne vers vous car je ne trouve pas exactement ma demande, ça me semble basique mais je ne dois peut-être pas avoir les bons termes pour rechercher.
En gros mon objectif est sur une page d'avoir une première page de base de données chaque champs, une colonne, et chaque entrée, une ligne.
Et une fois la base de données faite, et les relations faites sur la page de présentation de ces données qui reprend les infos, je dois donc ensuite dupliquer cette page de présentation de données mais qui doit elle reprendre les mêmes cellules de la base de données mais la ligne suivante. Et ainsi de suite jusqu'à la fin des lignes de la base.
Ma question est comment ne pas avoir à rechanger chaque références à la main ?

Un schéma pour visualiser :

Base de données.............Page de présentation 1
•_____A____B____C__
............Information utilisateur :
1.|..Paul....18...92..............."Il s'appelle "&A1&", il a "&B1&" ans et habite le "&C1
2.|..Max....45...75...............Il s'appelle Paul, il a 18 ans et habite le 92

Mais si je fais une duplication de la page Présentation 1, j'ai toujours les références à A1, B1 et C1, j'ai donc pensais mettre en dur l'"ID" de la ligne en dur sur la présentation, juste après à la masquer. Du genre :

Page de présentation 1
[ID ligne] 1
"Il s'appelle "&A(ID ligne)&", il a "&B(ID ligne)&" ans et habite le "&C(ID ligne)

Page de présentation 2

[ID ligne] 2
"Il s'appelle "&A(ID ligne)&", il a "&B(ID ligne)&" ans et habite le "&C(ID ligne)

Mais juste, comment intégrer cette référence dans la concaténation, ou faire ça encore plus simplement ?

Merci, je suis sûr que c'est pas compliqué, mais je trouve pas ce détail.
 
Dernière édition:

baron

Membre d’élite
22 Avril 2008
1 519
375
LLN
Ma question est comment ne pas avoir à rechanger chaque référence à la main ?
[…]
Mais juste, comment intégrer cette référence dans la concaténation, ou faire ça encore plus simplement ?
Je ne sais pas si on peut le faire plus simplement mais j'ai tenté d'appliquer ton idée — et finalement, ça marche…

La copie d'écran ci-jointe résume mes divers essais :
R/ Les cellules bordées de rouge contiennent des données introduites manuellement.
La colonne A indique ce que j'ai fait et dans la colonne B on voit le résultat.

Capture d’écran 2019-02-15 à 03.37.18.png
• Indiquer dans une cellule le numéro de la ligne (ou du rang dans le vocabulaire Apple) à laquelle on veut référer.
J'ai testé aussi bien avec une cellule dans le tableau qu'avec un tableau externe…

• Créer la référence en intégrant cette valeur.
Pour ça, il faut utiliser la fonction ADRESSE.
Conclusion : ça marche aussi bien avec une cellule dans le tableau qu'avec un tableau externe.
R/ Par facilité de lecture, je n'ai pas ajouté de paramètre quant au type de référence ; par défaut ce sont donc des références absolues…

• Utiliser dans la formule concaténée la référence d'une cellule.
Conclusion provisoire : ça va très bien avec un lien direct vers la bonne cellule mais pas avec la référence variable. Pas non plus en intégrant la formule trouvée plus haut…
En investiguant un peu plus, j'ai trouvé la fonction INDIRECT, et là ça marche !

Extrait de l'aide :
Bloc de code:
La fonction ADRESSE élabore une chaîne d’adresse dans une cellule d’après les différents identifiants de rangs, de colonnes et de tableaux.
ADRESSE (rang; colonne; type-adresse; style-adresse; tableau)
++++++++++
La fonction INDIRECT renvoie le contenu d’une cellule ou d’un intervalle référencé par une adresse indiquée sous la forme d’une chaîne.
INDIRECT (chaîne-adresse; style-adresse)
 
Dernière édition:

GLeb

Nouveau membre
18 Octobre 2018
8
0
37
glebcreation.fr
Désolé Baron, j'ai pas compris ton message, je suis loin d'être un expert comme toi. Du coup après avoir vu une vidéo qui expliquait étape par étape les fonctions ADRESSE et INDIRECT, je comprend maintenant ton message, et je confirme que c'est bien la fonction INDIRECT la plus adéquate à mon cas.

BDD
• | A | B |
1 |Max| 18|
2 |Luc| 45|

Si je met le rang en référence aléatoire dans un tableau à part je peux y faire appel via INDIRECT.

RANG 1 RANG 2
• | A | • | A |
1 | 1 | 1 | 2 |


La formule donne : =INDIRECT("BDD::A"&"RANG 1::A1")&" est âgé de "&INDIRECT("BDD::B"&"RANG 1::A1")&" ans."
Ce qui donne : Max est âgé de 18 ans.

Mais en changeant dans la formule la référence de rang, ici en gras souligné, on obtient :
Luc est âgé de 45 ans.

Sans ton aide Baron j'aurais pas trouvé cette formule tellement magique !

Ça parait tout con, mais dans chaque page, j'ai près d'une trentaine de références, sur 54 pages, si il avait fallu faire tout à la main, ça aurait était une p**¨¨¨de galère.
 

baron

Membre d’élite
22 Avril 2008
1 519
375
LLN
Sans ton aide Baron j'aurais pas trouvé cette formule tellement magique !

Ça parait tout con, mais dans chaque page, j'ai près d'une trentaine de références, sur 54 pages, si il avait fallu faire tout à la main, ça aurait était une p**¨¨¨de galère.
J'avais bien imaginé… :) C'est pour ça que j'ai pris la peine de chercher comment on pouvait s'y prendre (je ne suis pas expert mais curieux, alors je profite de questions bien formulées pour essayer d'apprendre un peu plus).

L'Aide du logiciel fournit assez bien d'infos, mais encore faut-il d'abord avoir une idée des fonctions concernées.

Pour expliquer encore un peu ma démarche, dans mon exemple en modifiant manuellement une seule fois par feuille "Présentation" le numéro de ligne (située en Tableau 1 :: B2 ou Référence de la ligne :: B1 — selon ce qu'on préfère utiliser), les références calculées en B5 ou B6 sont mises à jour avec la fonction ADRESSE. Ensuite, on peut faire référence à chacune avec INDIRECT.

N.B. Comme j'ai avancé à tâtons, la disposition des cellules dans mon tableau-exemple n'est pas optimalement pédagogique. :D L'important est que tu aies pu trouver une piste exploitable.
 
  • J’aime
Réactions: GLeb