Bonjour,
La fonction ADRESSE permet d'apporter une solution.
La formule :
= ADRESSE(EQUIV(Base!$A$1;'SYN-140201'!$A:$A;0);3;;;"SYN-140201")
renvoie le texte "SYN-140201!$C$16" dans l'état actuel du fichier mais si l'on insère une ligne supplémentaire en début de feuille SYN-140201, cette même formule renverra le texte "SYN-140201!$C$17".
Il faudra en plus utiliser la fonction INDIRECT pour obtenir à partir de ce texte la référence de cellule utilisée dans la formule avec la fonction DECALER, d'où la formule en B1 :
1 2 3 4
| =SI(OU(ESTTEXTE(DECALER(INDIRECT(ADRESSE(EQUIV(Base!$A$1;'SYN-140201'!$A:$A;0);3;;;"SYN-140201"));-LIGNE(A1)+1;0));
ESTVIDE(DECALER(INDIRECT(ADRESSE(EQUIV(Base!$A$1;'SYN-140201'!$A:$A;0);3;;;"SYN-140201"));-LIGNE(A1)+1;0));
ESTERREUR(DECALER(INDIRECT(ADRESSE(EQUIV(Base!$A$1;'SYN-140201'!$A:$A;0);3;;;"SYN-140201"));-LIGNE(A1)+1;0)));"";
DECALER(INDIRECT(ADRESSE(EQUIV(Base!$A$1;'SYN-140201'!$A:$A;0);3;;;"SYN-140201"));-LIGNE(A1)+1;0)) |
Comme cette formule devient assez indigeste, un moyen est de définir dans le Gestionnaire de noms par exemple le nom debut comme faisant reference à :
= ADRESSE(EQUIV(Base!$A$1;'SYN-140201'!$A:$A;0);3;;;"SYN-140201")
Il suffit d'écrire ensuite en B1 la formule :
1 2
| =SI(OU(ESTTEXTE(DECALER(INDIRECT(debut);-LIGNE(A1)+1;0));ESTVIDE(DECALER(INDIRECT(debut);-LIGNE(A1)+1;0));ESTERREUR(DECALER(INDIRECT(debut);-LIGNE(A1)+1;0)));"";
DECALER(INDIRECT(debut);-LIGNE(A1)+1;0)) |
puis de la recopier vers le bas.
Cordialement
Claude
Partager