Nom de classeur variable dans une formule [Résolu]

Signaler
Messages postés
40
Date d'inscription
vendredi 5 avril 2013
Statut
Membre
Dernière intervention
1 mai 2020
-
Messages postés
40
Date d'inscription
vendredi 5 avril 2013
Statut
Membre
Dernière intervention
1 mai 2020
-
Bonjour,

Je vous sollicite pour un petit coup de pouce car malgré mes tentatives je ne trouve pas la solution...

Je souhaiterais faire évolue mon logiciel et pouvoir changer de nom du classeur ou créer une nouvelle feuille avec un nouveau classeur sans recopier et modifier toutes les formules car il y en a vraiment beaucoup.
Jusqu'à present je reprenais cellule par cellule pour modifier les formules ce qui me prends énormement de temps.



Par exemple avec cette formule :

Nom du classeur : [Caravelles.xls]CAR 3

Nom du nouveau classeur : [Grillons.xls]Grillons D1

Comment pouvoir changer de nom sans à l'avenir devoir modifier toutes les formules manuellement?

=SI(OU(NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Régime'!$B$6)=1;NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Régime'!$B$7)=1;NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Régime'!$B$8)=1);'[Caravelles.xls]CAR 3'!F$11;'[Caravelles.xls]CAR 3'!F$11+'[Caravelles.xls]CAR 3'!F$24)+F45+F49

=SI(OU(NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$6)=1;NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$7)=1;NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$8)=1);'[Caravelles.xls]CAR 3'!F$10;'[Caravelles.xls]CAR 3'!F$10+'[Caravelles.xls]CAR 3'!$F$16)+SI(OU(NB.SI(Base_SPoisson;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$6)=1;NB.SI(Base_SPoisson;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$7)=1;NB.SI(Base_SPoisson;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$8)=1);0;'[Caravelles.xls]CAR 3'!$F$22)+F47+F51


J'ai également essayer cette formule "INDIRECT" en insérant le nom du classeur dans une cellule mais cela me donne "Ref#"...
Ce qui donne ca avec le nom du classeur en "N2" mais ne fonctionne pas:
=SI(OU(NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$6)=1;NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$7)=1;NB.SI(BSP1;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$8)=1);INDIRECT(N2&"!F$10");INDIRECT(N2&"!F$10")+INDIRECT(N2&"!F$16")+SI(OU(NB.SI(Base_SPoisson;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$6)=1;NB.SI(Base_SPoisson;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$7)=1;NB.SI(Base_SPoisson;'C:\Users\Alex\Desktop\SEMAINE 16\[Menu.xls]Menu Normal'!$B$8)=1);0;INDIRECT(N2&"!F$22"))+F47+F51)

Merci d'avance pour votre aide




Configuration: Windows / Chrome 81.0.4044.129

3 réponses

Messages postés
25166
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 juillet 2020
5 350
Bonjour
avec INDIRECT, veillez bien à ce que votre cellule de référence contienne bien le nom du classeur avec tous les signes qui doivent l'encadrer dans la formule et que le texte traduise bien l'adresse complète
par exemple si vous voulez remplacer
'[Caravelles.xls]CAR 3'
par un fichier zzzz.xls, écrivez bien en N2
'[zzzz.xls]CAR 3'!
ou alors si vous ne mettez que zzzz en N2 utilisez dans la formule:
INDIRECT("'["&N2&".xls]CAR3'!F11")
crdlmnt
Messages postés
40
Date d'inscription
vendredi 5 avril 2013
Statut
Membre
Dernière intervention
1 mai 2020
2
Merci de votre aide...

ok ca fonctionne avec "'[Caravelles.xls]CAR 3'"... mais probleme si mon classeur n'est pas ouvert ca ne fonctionne pas!
Peut t on contourner le probleme avec "INDEX" ou ("IndirectExt" mais par macro) mais l'adresse complete peut changer aussi si je travaille sur un autre pc par exemple?

Avec INDIRECT(N2&"!F$22") j'ai toujours "Ref#"

Messages postés
25166
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 juillet 2020
5 350
pour INDIRECT: qu'avez vous exactement en N2?
pour le classeur fermé, moi je n'ai pas lé réponse, ça ne veut pas dire qu'il n'y en a pas!
crdlmnt
Messages postés
8128
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
24 juin 2020
1 432
Bonjour,

La fonction INDIRECT() ne fonctionne qu'avec des classeurs ouverts, elle renvoie #Ref! quand le classeur est fermé.

Avec Excel 2013 ou plus je pense qu'il est plus simple de passer par Power Query.

Ou avec une macro, voir ce post :
https://forums.commentcamarche.net/forum/affich-27800356-equivalent-de-indirect-pour-un-fichier-ferme-sans-macro

Cordialement
Patrice

Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.
Messages postés
40
Date d'inscription
vendredi 5 avril 2013
Statut
Membre
Dernière intervention
1 mai 2020
2
Merci beaucoup pour votre aide

Cela dépasse largement mes compétences mais j 'ai vu que par macro c'est possible...

Mais je n' y connais rien malheureusement...