PatCatNat’s, site de Patrice MOREL
Vous êtes ici : Accueil » Inform@tic » Excel ou Calc » Incrémentation de lignes avec un classeur lié.

Incrémentation de lignes avec un classeur lié.

D 4 janvier 2018     H 21:14     A Patrice MOREL    


LibreOffice_Calc Libre Office - Calc

Problématique :
Un classeur de données de références est créé et doit servir à alimenter d’autres classeurs.
Ces autres classeurs actualisent les liens vers ce classeur de données de références.
L’avantage est qu’un seul fichier est alimenté et sert à toutes autres "bases" avec des données de références identiques.

Exemple :

  • Le chemin pour accéder à mon fichier est [P :/AdministratifPhotos]
  • Mon fichier de données de références se nomme [DonneesReference.ods]
  • La feuille comportant mes données se nomme [References]
  • Ma première donnée liée est en cellule [E4]

Le liens prends alors cette forme :
='file:///P:/AdministratifPhotos/DonneesReference.ods'#$References.$E4

Si je déplace mon classeur de données (ou transmet à autrui mon "application"), le lien est à refaire !

Pour éviter çà, il faut alors décomposer de lien :
Mettre le chemin de votre fichier de travail dans une cellule (dans l’exemple [B2]), soit P :/AdministratifPhotos/DonneesReference.ods

Le lien peut alors être écrit comme ceci avec la fonction CONCATENER() (ici j’utilise les esperluette (&) et les guillemets à la place de la fonction ; ce qui revient au même...) et utiliser la fonction INDIRECT() :
=INDIRECT("'file:///"&$B$2&"'#$References.$E4")
Note : $B$2 remplace le chemin P :/AdministratifPhotos/DonneesReference.ods. Les signes dollars permettent de "bloquer" la cellule (ligne et colonne) pour éviter qu’elle s’incrémente.

Cette formule fonctionne bien, et renvoi la bonne valeur, mais si j’essaie d’incrémenter la colonne, cela ne le fait pas et me renvoie toujours la valeur de ma cellule [$E4].

La première cellule à lier se trouve dans la même colonne [E] que dans votre fichier de données de références. Par contre la ligne se trouve en ligne [5], alors, comme on le voit dans l’exemple, la donnée à lier se trouve en ligne [4] !

Il faut donc utiliser la fonction LIGNE() soit :
=INDIRECT("'file:///"&$B$2&"'#References.$C"&LIGNE()-1)
Note : La ligne est ) -1 de la ligne de référence donc [LIGNE()-1]

Dans la même rubrique

3 août 2017 – Nom de fichier dans une cellule

14 mars 2012 – Date par défaut

14 décembre 2011 – Divers petits trucs

17 octobre 2011 – Préparer sa liste de diffusion par mail

7 janvier 2011 – Masquer des lignes et/ou colonnes sur ordre