VBA liaison automatique

bonjour,

je suis sur un problème depuis quelque jour il faut savoir que j'ai commencer le vba depuis 1 semaine.

pour expliquer j'ai une feuille de calcul et cette feuille a des formule dans des cellule qui vont chercher des valeur dans un fichier grâce a une liaison sauf que le fichier change chaque semaine (mais il ne change pas de nom ni de chemin). Et je dois faire un programme vba que quand j'appuis sur un bouton sa me modifie la liaison pour convenir au nouveau fichier ou au moins juste directement avoir la fenêtre de modification de liaison qui s'affiche pour que les personne n'on plus qua sélectionner le fichier de liaison.

je ne crois pas pouvoir vous mettre a disposition le fichier.

Merci d'avance de votre aide

Bonjour

je ne crois pas pouvoir vous mettre a disposition le fichier.

Alors cela va être compliqué de vous donner une solution

Si vous avez des données confidentielles, vous disposez de cet utilitaire en cliquant sur ce lien--> https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees

Laissez les liens en place ce sera plus simple

Cordialement

12calculs-dole.xlsm (28.65 Ko)

voici le fichier de calcul en question je ne peux pas fournir le fichier de donnée car le fichier est trop lourd

1. Quel est le chemin qui change ?

C:\Users\Lola.colling\Downloads\Emplacement calculs\
Là je vois que vous prenez des infos :
Dole.xls et feuille Site

2. Il y a deux boutons sur la feuille et des codes. vous pouvez expliquer un peu

NB : une idée. Avez-vous pensé que via un code VBA vous pourriez importer la feuille de site dans votre fichier de calcul ? Du coup cela simplifierait plutôt que de faire des liaisons à des fichier extérieurs. Possible cela ?

En gros pour résumer ce fichier je dois l'automatiser.

Et je le fait en 4 point

1) Exportation (celle que j'arrive pas) elle consiste a faire en sorte que la liaison du nouveau fichier (39.xlsx)qui change tout les semaine se fasse automatiquement.

2)Précédent(fini) elle consiste a automatiquement chercher les valeur de la semaine dernière dans la feuille de suivi pour les case en jaune au lieu de les rentrer manuellement.

3)Z-Y-AH-AI(fini) cette partie du programme permet daller chercher les valeur ducoup des case Z-Y-AH-AI dans un autre fichier que le fichier du programme exportation.

4) fin(fini) il envoie ducoup les résultat de calcul dans la feuille de suivi .

les 2 bouton ducoup celui qui est le plus en haut combine le point 1 et 2. Et le bouton du bas c'est pour le programme 4

une idée. Avez-vous pensé que via un code VBA vous pourriez importer la feuille de site dans votre fichier de calcul ? Du coup cela simplifierait plutôt que de faire des liaisons à des fichier extérieurs. Possible cela ?

et pour cela je ne sais pas car si je dois modifier les calculs. je ne pourrais pas je suis que une stagiaire qui aide a automatiser les fichier mais je ne comprend vraiment pas les calculs effectuer dans la feuille de calcul.

Aussi a moins de vous fournir un fichier zip je pourrai pas vous envoyer le fichier 39.xlsx car il est trop lourd pour le site

Bonjour,

Ok merci des explications

- Votre feuille de suivi c'est celle nommée "Calculs" dans le fichier posté ?

- Est ce que vous ajoutez des lignes chaque semaine dans cette feuille Calcul ou vous restez toujours sur la ligne 3 ?

La fiche de suivi est sur un autre fichier la ligne 3 cest c'est la ligne de calcul ducoup.

je ne vois pas trop l'ensemble en fait...

Avant de vous proposer une solution je dois comprendre le tout
Vous avez :
- un seul fichier contenant les données à importer (quel est le nom de la feuille des données à importer et est-ce que ce nom est identique ?
- le fichier de calculs (celui que vous m'avez envoyé ici) qui contient les liaisons
- un fichier de suivi

Vous pouvez confirmer ?

Désolé de toutes mes questions....

le fichier ou les données sont stocker s'appellera toujour 39.xlsx meme si il change chaque semaine

la feuille calcul_dole a une liaison avec 39.xlsx

et une feuille de suivi ducoup ou apres les calcul sont envoyés comme pour les archivés

Oulàlà, je capte pas trop la configuration par rapport à votre fichier posté.


Pour tout de même vous expliquer l'idée de ce à quoi je vous écrivais par rapport dans mon NB dans un post précédent

- Click sur le bouton exportation
- Vous choisissez le fichier pour lequel vous voulez importer la feuille dans votre fichier de calcul
- La feuille est importée dans votre fichier de calcul et renommée sous un nom "Import" par exemple

Une fois fait les données de la feuille Calculs sont toutes mises à jour

Cette idée suppose :
- que le fichier contenant les données à importer dans votre fichier calculs ne contient qu'une feuille (idéalement en tout cas)
- vos formules dans votre fichier Calculs sont liées à la feuille Importée (on peut la renommer IMPORT lorsque vous exécutez le code Exportation)
Exemple :
votre formule en A3 qui est comme ceci :
=SOMME.SI.ENS('C:\Users\Lola.colling\Downloads\Emplacement calculs\[Dole.xls]sites'!$AY$12:$AY$40000;'C:\Users\Lola.colling\Downloads\Emplacement calculs\[Dole.xls]sites'!$P$12:$P$40000;"CEMRS0SA_1020")


deviendrait ceci : =SOMME.SI.ENS(Import!$AY$12:$AY$40000;Import!$P$12:$P$40000;"CEMRS0SA_1020")

Idem pour les autres formules

L'avantage est que vous n'avez plus de liaisons avec l'autre fichier et donc plus besoin de vous occupez d'adapter le répertoire puisque les données seront importées dans votre fichier de calcul

Dites moi si vous comprenez la manip

Rem : si vous voulez poster un fichier trop, vous pouvez l'enregistrer avec l'extension XLSB

Le problème c'est es ce que on peut automatiser sa

- Click sur le bouton exportation

- Vous choisissez le fichier pour lequel vous voulez importer la feuille dans votre fichier de calcul

- La feuille est importée dans votre fichier de calcul et renommée sous un nom "Import" par exemple

si je lance une macro en fessant sa ça devrait marcher mais vu que le fichier change chaque semaine sa devrais pas marcher même si il a pas le même nom.

car au début j'avais tenter quelque chose de très simple de lancer une macro et de faire Ducoup donnée > modifier les liaisons>modifier la source> et la je sélectionner le nouveau fichier 39.xlsx.

Ducoup la macro marcher très bien mais quand j'ai fait une simulation de la réel utilisation c'est à dire ducoup prendre le fichier 39.xlsx de la semaine dernière de le supprimer et de télécharger le nouveau fichier 39.xlsx de cette semaine. Puis j'appuie sur le bouton de la macro que j'ai crée précédemment mais elle ne marche pus.

je ne sais pas si vous voyais ce que j'ai voulu faire

si je lance une macro en fessant sa ça devrait marcher mais vu que le fichier change chaque semaine sa devrais pas marcher même si il a pas le même nom.

Quand vous dites que le fichier 39.xlsx change, la structure est identique non ?
Sans quoi impossible de faire fonctionner les formules Somme.si.ens

Au vu de vos précisions, ce que je veux faire c'est ceci :
- Vous cliquez sur votre bouton d'importation
- vous choisissez le fichier 39.xlsx
- une fois ce fichier ouvert, le code va importer la feuille du fichier 39.xlsx dans votre fichier Calculs
- on renomme la feuille importée en la renommant "IMPORT"

Du coup, comme les formules Somme.si.ens vont chercher les données dans la feuille Import, cela remet votre fichier calcul avec les nouvelles données

La semaine suivante on refait la même chose en supprimant d'abord la feuille Import avant de réimporter la nouvelle depuis le nouveau fichier 39.xlsx

Là plus besoin de liaisons puisque vous avez tout dans le même fichier

la structure du fichier 39.xlsx ne changera pas et ducoup quel serait la macro pour faire cela?

une fois ce fichier ouvert, le code va importer la feuille du fichier 39.xlsx dans votre fichier Calculs

et es ce que sa risque de bugée car le fichier 39.xlsx fait une taille de tableau de environ 6000*180

Je ne vois pas pourquoi vous auriez un bug

Quel est le nom de la feuille qui se trouve dans le fichier 39.xlsx et est-ce que ce fichier contient d'autres feuilles ?

le fichier 39.xlsx ne contient que une seul feuille qui s'appel "sites"

La première chose à faire pour vous est de modifier la formule Somme.si.ens afin d'y trouver le nom "Import" (que j'ai choisi dans le code)
On peut choisir un autre si vous voulez. Le tout est que la formule devienne comme expliqué ici --> https://forum.excel-pratique.com/s/goto/1145694

On peut laisser "Sites" si vous voulez mais en donnant un nom "Import" on n'est plus sûr. Il suffirait que quelqu'un décide de modifier "sites" pour que cela ne fonctionne plus

d'accord je vais le faire.

Non ne changez rien, j'ai trouvé plus simple

Mettez ce code lié à votre bouton Importation

Sub majLiens()
Dim Lien, fichier

Lien = ActiveWorkbook.LinkSources(xlExcelLinks)
fichier = Application.GetOpenFilename 'ouverture du fichier pour import feuille donnees

If Not IsEmpty(Lien) Then
    ActiveWorkbook.ChangeLink Name:=Lien(1), NewName:=fichier, Type:=xlExcelLinks
End If
End Sub

cela suppose que votre fichier n'a que ce lien là évidemment

jai fait un test et sa marche mais dcp il faut juste que je rajoute une ligne pour ouvrir le nouveau fichier car sinon la liaison ne se lance pas

dcp

???

il faut juste que je rajoute une ligne pour ouvrir le nouveau fichier

ajouter une ligne ? C'est à dire ?

Avec l'instruction Getopenfilename vous avez le choix d'aller le chercher le fichier là où il se trouve et la variable fichier reprend le lien désiré

Rechercher des sujets similaires à "vba liaison automatique"