fonction indirect

  • Initiateur de la discussion sophie78
  • Date de début
S

sophie78

Guest
Bonjour,

J'utilise la fonction indirect pour pouvoir récupérer des données situées dans un classeur extérieur en ayant la possibilité d'écrire l'adresse des cellules à l'aide de fonctions.

Mon problème est qu'à la fermeture du fichier (et enregistrement), l'information n'est pas conservée.

Comment puis-je faire pour la conserver ou quelle fonction similaire puis-je utiliser ?
merci beaucoup
 

JeanMarie

XLDnaute Barbatruc
Bonjour Sophie

Si tu fais une recherche dans les archives du forum 1ère génération, tu trouveras comment récupérer des données dans un classeur fermé.

Je te propose une autre solution, à l'aide de l'itération d'Excel.

Va dans la boîte de dialogue des options d'Excel, dans l'onglet 'Calcul', coche le champ Itération, et met la valeur 1 dans le champ 'Nb Maximal d'itérations', et valide. Cela supprime l'erreur de référence circulaire.

Maitenant, il faut adapter la formule dans l'exemple, elle est écrite dans la cellule C3, l'adresse de la cellule à retourner est celle-ci [ChangtCA_TAred.xls]Feuil1!$G$17.

=SI(ESTERR(INDIRECT('[ChangtCA_TAred.xls]Feuil1!$G$17'));C3;INDIRECT('[ChangtCA_TAred.xls]Feuil1!$G$17'))

Pour valider la formule, le fichier doit être ouvert, après il peut-être fermé.

@+Jean-Marie
 
S

sophie78

Guest
Merci beaucoup pour ton aide, mais... (car hélas, il y a un mais) :

quand je ferme le fichier source [ChangtCA_TAred.xls], pas de problème, je conserve mon info.

En revanche, quand je ferme le fichier dans lequel j'ai tapé la fonction indirect et que je l'ouvre de nouveau, alors il a perdu l'info.

De plus, par rapport à ton exemple, dans la cellule C3, j'ai du texte car l'adresse suivante [ChangtCA_TAred.xls]Feuil1!$G$17 est obtenue à partir d'une fonction
=> quand le résultat de indirect est erreur => j'obtient en texte l'adresse recherchée (et pas la valeur correspondante).

Ci-joint la formule initiallement saisie, avec en a12 la fin du libellé de mon fichier qui est variable :

=SI(ESTERR(INDIRECT(CONCATENER('[focd_';$A12;'.xls]récap!k59')));+X12;INDIRECT(CONCATENER('[focd_';$A12;'.xls]récap!k59')))

J'espère avoir été claire...
merci beaucoup pour ton aide

Sophie
 

Discussions similaires

Statistiques des forums

Discussions
312 980
Messages
2 094 130
Membres
105 941
dernier inscrit
antho_qh