Automatiser des liens entre fichiers

oderoaldes

XLDnaute Junior
Bonjour à toutes et à tous,
Je suis un nouveau venu sur XLD et bravo et merci pour vos solutions toujours plus pointues qui m'ont déjà bien aidées à résoudre pas mal de cas mais là je coince et n'ai pas trouvé, ou su trouver, une réponse à mon problème.

Je reprends la gestion d'environ 60 nomenclatures de fabrication; plus ou moins 400 feuilles de calcul, dans une dizaine de répertoires qui vont chercher par "recherchev" un prix par rapport à une référence interne dans un fichier de "Tarif FournisseurAAAA".

Ce fichier tarif fournisseur est mis à jour tous les an et jusqu'à maintenant ce tarif était nommé "Tarif fournisseur2018" puis "Tarif fournisseur2019"et ainsi de suite.
Si je veux faire la mise à jour vers "Tarif fournisseur2020", je dois maintenant changer tous les liens dans chaque formule de chaque feuille pour qu'il pointe à nouveau vers le bon tarif "Tarif fournisseur2020". Il est possible de le faire par "Rechercher/Remplacer" j'ai essayé, cela fonctionne mais avec le risque d'oublier une feuille ou une formule.

J'ai bien pensé à ne pas renommer le fichier de Tarif pour éviter à l'avenir cette manipulation fastidieuse en le nommant par exemple "Tarif fournisseurN" qui serait par défaut celui de l'année en cours, mais cela n'empêche qu'il va falloir quand même passer dans tous les fichiers pour le faire.
Je pensais aussi passer du "RechercheV" à un "index-Equiv" qui est peut être plus souple.

Y aurait il une manière d'automatiser cette fonction ?
Y a t'il une organisation de fichier qui pourrait aider à simplifier cette mise à jour ? je vous joins un petit schéma pour vous expliquer la structure actuelle.

En vous remerciant d'avance de votre aide.
 

Pièces jointes

  • Organisation.xlsx
    23.3 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Oderoaldes, Bonjour David,
Le problème est moins de faire les modifs que d'en effectuer la vérification précise.
Le risque étant un raté qui passera inaperçu, et s'agissant de tarifs peut avoir de néfastes conséquences.
Un autre moyen "pas très propre" mais efficace est de rebaptiser Tarif fournisseur2020 en Tarif fournisseur2019. Ce nom devenant alors générique.
( il faut mémoriser l'astuce quelque part pour l'expliquer et s'assurer que les utilisateurs soient tous au courant )
 

oderoaldes

XLDnaute Junior
Bonjour Sylvanu,
Merci de ta réponse et de cette solution, c'était un peu mon idée en conservant le nom de fichier par "Tarif_Fournisseur_N" ou utiliser ta solution à l'avenir mais pour ce faire, il faut quand même que je puisse vérifier que ce nom de "Tarif Fournisseur 2019" soit bien présent dans toutes les formules et que des références à des années antérieures ne sont pas restées quelque part.
Je ne sais pas 'il est possible d'éditer toutes les formules avec leur position autrement que par la fonction afficher les formules mais ce serait une solution pour tout vérifier en bloc et faire les modif nécessaires. C'est un peu fastidieuse car il va falloir passer de répertoires en répertoires et de feuilles en feuilles à moins qu'il y ai une possibilité de de l'automatiser mais là je ne suis pas compétent.
cordialement.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Oderoaldes,
Etes vous entrain de dire que dans tous vos fichiers 2019 "il se pourrait" qu'il y est des références à des prix 2018 ? voire 2017 ? Oups !
Le problème n'est plus de remplacer 2019 par 2020. Il est beaucoup plus complexe.

Déjà un point intéressant :
Si dans une formule vous avez ='[Tarif fournisseur2019 .xlsm]Feuil1'!$C2 qui donne 3, un CTRL F avec 2019 va vous le trouver.

Auriez vous un petit fichier type et anonyme pour qu'on puisse s'amuser ?
 

oderoaldes

XLDnaute Junior
Bonjour Sylvanu,
C'est malheureusement bien ce que je veux dire.
Je viens de tester le contrôle F sur un fichier, ça fonctionne effectivement très bien en testant 2018-2017 etc, ça va être un peu long mais au moins je suis sure de ne pas en oublier.

Comment pourrais je maintenant remplacer en automatique la formule ci-dessous, sachant que B4 change à chaque ligne

=RECHERCHEV(B4;'X:\1-Tarif\2-Tarif Clients\2018\[Tarif2018.xlsx]Feuil1'!$A:$I;8;FAUX)

Par

=RECHERCHEV(B4;'X:\1-Tarif\2-Encours\[TarifN.xlsx]Feuil1'!$A:$I;8;FAUX), je peux le faire par rechercher : "X:\1-Tarif\2-Tarif Clients\2018\[Tarif2018.xlsx]Feuil1'!$A:$I"
remplacer par :
"X:\1-Tarif\2-Encours\[TarifN.xlsx]Feuil1'!$A:$I"
mais la aussi cela risque de prendre pas mal de temps.
Un petit fichier test sachant que j'ai quelques fichiers avec + de 20 onglets
Merci de votre aide.
 

Pièces jointes

  • Testformule.xlsx
    139.6 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
En PJ un essai à tester.
Lancer la macro ChangeAnnee ( par ALT F8 )
Il remplace dans toutes les feuilles 1017,1018,2019 par 2020.
Le problème est que chez moi je n'ai pas les bons dossiers donc il demande toujours quoi ouvrir. J'espère que chez vous cela sera ok.
Je suis parti du postulat que vous aviez une directory 'X:\1-Tarif\2-Tarif Clients\2020\[Tarif2020.xlsx]
sinon il faut modifier la macro en conséquence.
Mais le principe à l'air de fonctionner.

Ceci étant dit, mon affiramation reste vrai : "Le problème est moins de faire les modifs que d'en effectuer la vérification précise. "
 

Pièces jointes

  • Testformule.xlsm
    165.3 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Attention !!!

Je viens de me rappeler un sale souvenir.
Cette manip suppose que dans tous vos fichiers de prix les références cherchées n'ont pas changées ou qu'il n'y a aucun composant supprimé !
Car jadis j'ai vécu une expérience où le service Achat avait changé certains intitulés entre deux fichiers pour un même composant. ( Dieu merci, assez peu )
Et là, il ne reste que l'huile de coude et la substitution manuelle.

Et pensez à ne travailler que sur des fichiers qui ont une sauvegarde.
 

oderoaldes

XLDnaute Junior
Désolé, je l'avais raté.
Cela fonctionne très bien et je pensais pour éviter dans oublier de remonter à 2014 avec votre macro puis lancer ensuite une seconde macro qui pourrait être :
Sub Changeformule()
Dim Feuille As Worksheet
For Each Feuille In ActiveWorkbook.Sheets
Feuille.Select
Cells.Replace What:="X:\1-Tarif\2-Tarif Clients\2020\[Tarif2020.xlsx]Feuil1'!$A:$I", Replacement:="X:\1-Tarif\2-Tarif Clients\[TarifN.xlsx]Feuil1'!$A:$I", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next Feuille
End Sub
Qu'en pensez vous ?
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 909
Membres
101 836
dernier inscrit
karmon