Référence indirecte avec NomFichier variable

Flavioo -  
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis en train de développer un planning récapitulatif sur excel. Ce planning récapitulatif se trouve dans le classeur planningrecapitulatif.xlsx.

J'ai un autre classeur Bases.xlsx où se trouve notamment une feuille Chantiers (la liste des "chantiers en cours"). Cette feuille contient un tableau, avec comme colonnes : ID, NomChantier, CodeChantier, NomFichier.

Et aprés, il y a UN classeur pour chaque chantier avec dedans un planning nommé NomFichier.xlsx (NomFichier se trouve donc dans le classeur Bases.xlsx, feuille Chantiers, colonne D).

Ainsi, le Planning récapitalutif, doit afficher un récapitulatif de l'ensemble des autres planning (ceux de chaque chantier).

Je précise que le "calendrier" est présenté de la même manière dans le planningrecapitulatif.xlsx et dans tous les NomFichier.xlsx.

Voici ce que je fais dans le classeur planningrecapitulatif.xlsx pour chaque case du calendrier :

=SI(SI(INDIRECT("'["&[Bases.xlsx]Chantiers!$D$3&".xlsx]Affectation'!E6")<>"T";0;1)
...
+SI(INDIRECT("'["&[Bases.xlsx]Chantiers!$D$103&".xlsx]Affectation'!E6")<>"T";0;1)>1;"ERREUR";"T")

Ce que fait cette forumule :
1.Va voir dans la case D3, D4, .. D103, du classeur Bases.xlsx et récupère son contenu.
2.Remplace NomFichier dans la référence [NomFichier.xlsx]Affectation!E6.
3.Si la référence conduit ne PAS afficher T alors envoi 0 sinon, 1.
4.On fait la somme de toutes les valeurs renvoyées ET si c'est >1 alors, affiche Erreur sinon T.

Cette formule marche parfaitement si les cases de D3 à D103 du classeurs Bases.xlsx de la feuille Chantiers sont remplies avec des NomFichiers existants.

Mon problème est le suivant:
Je ne connais pas à l'avance les NomFichiers, combien ils seront ect... Donc, par exemple seulement 10 chantiers peuvent exister. Donc 90 cases de la colonne D ne seront pas remplies. Et dans ce cas Excel renvoie "Ref!" car effectivement la formule lui demande de chercher le fichier [.xlsx] chose que n'est pas possible ! = erreur..

Quelqu'un aurait il unee solution? Je suis preneur ...

Je précise que la formule fait actuellement 8150 caractères, le maximum étant à 8192...

Si c'est possible en VBA, je prends aussi, même si n'y connaissant rien, il faudrait me guider SVP.

Merci d'avance,

Flavioo

2 réponses

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 439
 
Bonjour
Essayez en tête de formule:
=SI(ESTERREUR(INDIRECT(adresse fichier &A1));""; votre formule
*ce qui devrait aire moins des 42 caractères qui vous restent
crdlmnt



0
Flavioo
 
Bonjour,

Merci pour votre réponse.

Si je fais cela, deux choses :
- La fonction affiche TOUJOURS "" (vide), même quand sa marchait avant ...
- Je peux pas mettre l'adresse du fichier, puisque justement je ne le connais pas à l'avance...

Probléme donc non résolu

Merci d'avance
0
Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 439
 
Alors nous n'avons pas du nous comprendre.
Je ne sais pas où vous prenez vos noms de fichiers dans votre formule,mais vus que vous utilisez INDIRECT j'avais pensé à une configuration de ce genre dans votre tableau récapitulatif:
en Ligne 1 les texte complets des adresses de classeurs existants ou à venir, même s'il ne sont pas encore créés
(textes complets incluant les caractères signalétiques propres à l'adressage Excel _crochets,point d'exclamation le cas échéant, ect..jusqu'à l'adresse de la feuille ou de la cellule à renvoyer)
en commençant en B1 par exemple
Ensuite, la formule, par exemple:
=SI(ESTERREUR(INDIRECT($B$1&A1);"";INDIRECT($B$1&A1) pour avoir la valeur de la cellule A1 du classeur dont l'adresse est placé en B1 s'il existe, sinon renvoie "".

Mais ce n'est sans doute pas ça que vous cherchez
crdlmnt
0