Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
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.
 

nauj

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

Malheureusement, ça ne sera pas possible de l'installer.
Si le Forum aurait une autre idée, je suis bien entendu intéressé.
Merci Misange
 

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

Bonjour Boisgontier, Forum
Merci pour cette proposition que j'essaierai d'adapter à mon problème
Je vous tiendrai au courant
A très bientôt
 

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

Misange, Boisgontier, Forum,
A nouveau un grand merci pour votre double contribution !
Je vais tester tout cela ce soir au calme et reviendrai vers vous.
A très bientôt
 

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

nauj

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

Bonjour Boisgontier, Forum,
Ça fonctionne !
Merci encore pour le temps que tu as bien voulu consacrer à mon sujet.
Ce fil peut être considéré comme fermé.
A bientôt
 

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
50
Affichages
5 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…