Formule faisant appel à d'autres classeurs

nauj

XLDnaute Junior
Bonsoir Forum,
Je cale sur un problème qui - à première vue - me paraissait simple à traiter :confused:
J'ai crée une feuille de consolidation (cf. fichier attaché) qui fait appel à deux autres fichiers (dans un même répertoire).
La formule utilisée est relativement classique de type Index - Equiv et fonctionne parfaitement.
En revanche, ce fichier de consolidation sera distribué à plusieurs personnes, du coup, au lieu de réécrire la formule à plusieurs reprises en renommant à chaque fois le "chemin\ répertoire\fichiers" , je voulais mettre en place - dans un onglet paramètres - des plages nommées (Chemin, Classeur, Onglet, Cellule) qui font référence à ces informations.
Lorsque j'essaie de réécrire la formule en faisant appel à ces plages nommées, elle ne fonctionne pas...
Je suis preneur de toute idée, suggestion, proposition qu'elles soient de type formule ou vba.
Merci d'avance à tous ceux s’intéresseront à mon sujet
Cdt
 

Pièces jointes

  • Conso xxx - Pilotage Activité.xlsx
    12.3 KB · Affichages: 65
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Formule faisant appel à d'autres classeurs

Bonjour
Utilise la fonction indirect (attention elle ne fonctionne que si les classeurs externes sont ouverts) pour construire ta formule en mettant le chemin dans une cellule. Si le chemin comporte des espaces, encadre le d'une simple coche ' en plus de la double nécessaire.

Attention à ce que le nom des chemins ne soit pas trop long...
 

nauj

XLDnaute Junior
Re : Formule faisant appel à d'autres classeurs

Bonjour Misange, Forum,
Effectivement, j'avais pensé à la fonction Indirect() mais le fait qu'elle ne fonctionne que lorsque les autres fichiers à consolider soient ouverts est une vraie contrainte !
J'ai laissé donc tomber cette piste...
Cdt
 

Misange

XLDnaute Barbatruc
Re : Formule faisant appel à d'autres classeurs

Mais je pense que c'est hélas la seule piste. D'autres auront peut être une autre idée mais le problème est assez classique...
Si tu es prêt à installer morefunc de Laurent Longre sur les PC devant utiliser ton appli, tu peux alors utiliser indirectext qui fonctionne avec des classeurs fermés.
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Formule faisant appel à d'autres classeurs

Bonjour,

Un exemple d'écriture dynamique de formule en PJ

JB
 

Pièces jointes

  • RecupClasseurFermeRechercheV2.xls
    34.5 KB · Affichages: 66
  • RecupClasseurFermeRechercheV2.xls
    34.5 KB · Affichages: 68
  • RecupClasseurFermeRechercheV2.xls
    34.5 KB · Affichages: 67

nauj

XLDnaute Junior
Re : Formule faisant appel à d'autres classeurs

Boisgontier, Forum,
Je n'ai pas encore testé mais à priori, ça devrait fonctionner !
En revanche, je n'ai pas la moindre idée de comment écrire une formule Excel de type Index (Equiv() ) en vba...
 

Misange

XLDnaute Barbatruc
Re : Formule faisant appel à d'autres classeurs

Bonjour Jacques, Nauj
Effectivement par macro en inscrivant le chemin dans une cellule c'est une bonne idée.
pour index equiv (sur une seule ligne)
Code:
Application.WorksheetFunction.Index(Range("champcontenantlavaleurarenvoyer"), Application.WorksheetFunction.Match(cequetucherches, Range("outucherches"), 0))
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Formule faisant appel à d'autres classeurs

Voir pj

Code:
   Range(ChampFormule).Formula = _
        "=INDEX('" & chemin & "\" & fichier & "'!" & NomTableIndex & ",MATCH(B2,'" & _
           chemin & "\" & fichier & "'!" & NomTableEquiv & ",FALSE))"

Pour transformer les formules en valeur, ajouter:

Code:
    Range(champFormule) = Range(champFormule).Value

JB
 

Pièces jointes

  • RecupClasseurFermeRechercheV2.xls
    53 KB · Affichages: 60
  • RecupClasseurFermeRechercheV2.xls
    53 KB · Affichages: 64
  • RecupClasseurFermeRechercheV2.xls
    53 KB · Affichages: 64
Dernière édition:

Misange

XLDnaute Barbatruc
Re : Formule faisant appel à d'autres classeurs

Tu as le choix en fait Nauj :
avec la soluce de jacques, tu écris la formule dans la feuille. Du coup elle se met à jour quand tu ouvres le classeur.
Ou bien tu fais le calcul dans la macro et tu places le résultat seulement dans la feuille.Tu peux soit mettre un bouton dans la feuille pour lancer la macro soit la mettre dans une macro événementielle qui se déclenche quand tu changes par exemple le contenu d'une cellule dans la feuille.
L'avantage de la première soluce c'est que tu restes proche de ton classeur de départ
l'avantage de la seconde c'est que si tu as beaucoup de données à récupérer, tu auras un classeur beaucoup plus rapide et léger. A toi de voir.
 

nauj

XLDnaute Junior
Re : Formule faisant appel à d'autres classeurs

Bonjour Forum, Boisgontier, Misange,
Après avoir essayé hier de mettre en application vos conseils, je ne peux que constater mon échec :(
Les formules de calcul dans le tableau sont opérationnelles mais le code vba rajouté sur la feuille conso du fichier ci-attaché ne fonctionne pas... Je n'arrive pas à voir le line existant entre les formules écrites en dur sur et ce code... De plus, mes faibles connaissances en vba ne me permettent pas d'y apporter une solution seul.
Pour ceux qui seraient intéressés par mon sujet, je reste bien entendu preneur de toute idée d'amélioration.
Merci d'avance
 

Pièces jointes

  • Conso xxx - Pilotage Activité v2.xlsm
    25.7 KB · Affichages: 50

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
50
Affichages
5 K

Statistiques des forums

Discussions
312 391
Messages
2 087 955
Membres
103 686
dernier inscrit
maykrem