IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro pour mettre à jour les liaisons [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut macro pour mettre à jour les liaisons
    Bonjour,

    Je dois livrer des fichiers avec des macros, dont un en particulier "Accueil" contient toutes les macros communes aux autres fichiers.
    Mon problème c'est qu'à chaque fois qu'on déplace les fichiers, les liens ne fonctionnent plus.
    Donc je voudrais automatiser l'adresse du fichier "Accueil", dans tous les autres fichiers

    J'ai trouvé ce code, mais cela ouvre une boite de dialogue et même si on choisit le fichier Accueil, les liens ne sont pas pris en compte...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Macro de Michael Johnston
    Application.AskToUpdateLinks = False
    ActiveWorkbook.UpdateLink Name:=ActiveWorkbook.LinkSources
    Ce que je voudrais automatiser c'est la fenêtre "Modifer les liaisons" / modifier la source / et forcer le chemin du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VBA.Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\")) & "Admin\Accueil.xlsm"

    ou alors, dans une feuille (commune à chaque fichier), modifier l'affectation d'une macro à une image, en imposantf le chemin ci-dessus

    Est-ce que qq'1 peut m'aider, svp ?
    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne sais pas quelle est l'arborescence des répertoires contenant les fichiers à ouvrir
    Pour ma part, j'organise toujours les liaisons avec des sous-répertoires du répertoire où se trouve le classeur maître (celui où se trouve les liaisons). Cela permet de créer des liaisons relatives plutôt qu'absolues ce qui permet de déplacer le répertoire complet sans rompre la liaison.
    Je privilégie également la fonction LIEN_HYPERTEXTE bien plus intéressante et dynamique.

    Plusieurs billets sur le sujet
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour Phillippe,

    Tu as déjà fait cette réponse à qq'1 et j'ai retenu la leçon ; c'est ce que j'essaye de faire
    Le pb, c'est que pour faire ma livraison, je dois mettre tous les fichiers dans un répertoire d'un serveur dédié et les utilisateurs doivent aller les chercher puis les ranger selon l'arborescence que j'ai choisi, répertoire principal pour le fichier maitre et un sous répertoire où se trouvent les autres, qui s'ouvrent par lien hypertexte.
    Mais les utilisateurs se retrouvent avec le lien de mon fichier de travail...
    D'ailleurs, moi même, quand je fais une sauvegarde sur ma clé usb, pour bosser chez moi, les liens restent ceux du bureau, et si je les change, au bureau, je me retrouve avec ceux de chez moi

    J'ai limité au maximum, il n'y a qu'une seule macro qui est dans le fichier maître et qui doit être lancé à partir des autres fichiers...

    Merci quand même pour le conseil.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 168
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 168
    Billets dans le blog
    53
    Par défaut
    Bonjour Mouftie,
    Il y a une solution à tout, il suffit d'être créatif.
    En ce qui concerne les liens qui sont différents suivant que l'on se trouve au bureau ou au domicile. Une solution si les PC sont différents serait de prévoir un fichier ini ou txt qui donne le chemin du répertoire principal
    Si le PC est le même et qu'il est possible de repérer l'environnement où l'on se trouve, prévoir deux chemins automatiques si ce n'est pas possible de le repérer. Prévoir également deux chemins mais poser la question avant de démarrer Bureau/Domicile et dans le LIEN_HYPERTEXTE prévoir soit une cellule Excel dans une feuille paramètre, soit un fichier INI ou TXT contenant le répertoire principal que l'on concatène avec le sous-répertoire
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Merci Philippe,

    J'ai trouvé ça dans le forum :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.ChangeLink Name:="H:\Fichiers Excel\AncienFichier.xls", NewName _
            :="H:\Fichiers Excel\NouveauFichier.xls", Type:=xlExcelLinks
    J'avais bien essayé de le générer toute seule par l'enregistreur, mais cela me fait planter Excel à chaque fois (même avec des fichiers neufs...)

    Cela fonctionne, mais le problème sera de récupérer le lien à changer ? de l'expérience que j'ai, ce n'ai pas automatique ; j'ai des collègues qui ont mon chemin, d'autres celui du serveur hébergeur...
    y a-t-il moyen de le connaître ?

    En attendant une réponse, je fonce voir ce qu'on peut faire avec .INI, je n'en ai jamais utilisé

  6. #6
    Membre éclairé
    Femme Profil pro
    reconversion en cours
    Inscrit en
    Juillet 2009
    Messages
    633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : reconversion en cours
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2009
    Messages : 633
    Par défaut
    Bonjour A tous,
    Grâce au forum, j'ai trouvé comment résoudre mon problème...
    Cf. la faq sur les liens https://excel.developpez.com/faq/?page=Liaisons

    Pour ce que cela interresse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Sub ExtraitDocumentLies()
        Dim TabLiaisons As Variant
        Dim x As Integer
     
        'Renvoie un tableau de TabLiaisons
        TabLiaisons = ActiveWorkbook.LinkSources
    '    TabLiaisons = ThisWorkbook.LinkSources
        'Vérifie si le tableau est vide
        If Not IsEmpty(TabLiaisons) Then
            'Boucle sur le tableau
            For x = 1 To UBound(TabLiaisons)
                If Right(TabLiaisons(x), 12) = "Accueil.xlsm" Then
                    If Dir(TabLiaisons(x)) = "" Then _
                        ActiveWorkbook.ChangeLink Name:=TabLiaisons(x), NewName _
                            :=ThisWorkbook.Path & "\Accueil.xlsm", Type:=xlExcelLinks
                End If
            Next x
        End If
    End Sub
    Merci Philippe

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ne pas mettre à jour les liaisons ?
    Par Zebulon777 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/02/2010, 15h29
  2. Réponses: 4
    Dernier message: 15/02/2010, 21h41
  3. Macro pour mettre à jour tous les TCD
    Par kimai81 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 07/03/2008, 21h55
  4. Réponses: 0
    Dernier message: 12/11/2007, 14h13
  5. [VBA-E] comment ne pas mettre à jour les liaisons!
    Par max2245 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/12/2005, 12h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo