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 :

Maj des liaisons de tout un dossier.


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut Maj des liaisons de tout un dossier.
    bonjour,

    Je souhaite mettre à jour les liaisons de données de l'ensemble des fichiers excel qui se trouvent dans une arborescence de fichiers.

    les liaisons indiquent un chemin UNc de type : \\serveurxx\partage\sdossier\[gestion.xls]gestion1'!$a!$5' j'ai besoin de remplacer la première partie \\serveurxx\partage par \\serveuryy\partagey.

    merci pour vos suggestions.

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Essaye d'utiliser un Dir pour ouvrir chaque fichier Excel

    et vois comment adapter le code ci-dessous (issu de l'enregistreur) pour modifier tes liaisons.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveWorkbook.ChangeLink Name:="\\serveurxx\partage\MonFichier.xls" _
    , NewName:="\\serveuryy\partagey\MonFichier.xls", Type:=xlExcelLinks
    --------------
    Frédéric
    http://www.access-developpement.com

  3. #3
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Pour parcourir le dossier et les sous-dossier soyont fous
    http://excel.developpez.com/faq/inde...riptingRuntime
    et au lieu de lister gentillement les dossier dans une feuille
    ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            'Inscrit le nom du fichier dans la cellule
            Cells(i, 1) = FileItem.Name
            'Ajoute un lien hypertexte vers le fichier
            ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1), _
            ....
            ....
    Tu testes l'extension de ton fichier pour savoir si c'est un xls
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if right(FileItem.Name,4)=".xls" then
    Si c'est le cas tu l'ouvre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open FileItem.ParentFolder & "\" & FileItem.Name
    tu utilise le code de fgiambelluco pour modifier les lien
    (pour modifier le début essaye de voit le tuto su la manipulation de chaine de caractère)
    tu ferme en enregistrant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Close True

  4. #4
    Membre averti
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Par défaut maj des liaisons suite
    merci pour vos précédentes réponses,

    existe t il un moyen pour préciser à l'ouverture des fichiers excel de ne pas mettre à jour les liaisons? (puisque ces dernières ont des chemins erronés que je dois corriger?)

    merci

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    With ThisWorkbook
    Liens = .LinkSources(xlExcelLinks)
    For Each lelien In Liens
        If Dir(lelien) <> "" Then
            .UpdateLink Name:=lelien, Type:=xlExcelLinks
        End If
    Next
    End With
    End Sub
    Ce bout de code que j'ai pris sur Internet permet de mettre à jour les liaisons si et seulement si les liens existent. Ce n'est pas exactement ce que tu as demandé mais ça a l'air de correspondre à ce que tu souhaites faire.

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Par défaut
    Bonjour
    Si les fichiers sont ouverts par le code ou peut empecher la mise à jour des liaisons (c'est dans l'aide de la méthode Open)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open "monfichier.xls", 0

Discussions similaires

  1. [PPT-2010] mise a jour des liaisons a l'interieur du meme dossier
    Par dodo28 dans le forum VBA PowerPoint
    Réponses: 3
    Dernier message: 03/01/2012, 15h21
  2. [Toutes versions] Liaison Access Maj des données
    Par iperkut dans le forum Conception
    Réponses: 1
    Dernier message: 18/03/2011, 10h56
  3. [XL-2002] maj des liaisons se trouvant dans des formules
    Par taratata_69 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 08/07/2009, 17h25
  4. MAJ des dimensions sous Analysis Services
    Par Guizz dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/08/2003, 11h34

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