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 :

liaison avec word [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut liaison avec word
    Bonjour à tous et bonne année!

    Dans un document word je possède un grand nombre de liaison excel créer par copier collage spéciale avec liaison sur des tableaux excel.

    Je souhiaterais pouvoir modifier le chemin de la source excel par code vba afin de ne pas avoir a répéter l'opération, modifier la source et aller pointé le bon fichier.

    J'ai chercher sur le forum et sur nénette mais je ne trouve pas mon bonheur.
    J'ai quelques piste avec "Fields" "Fields.Index" ou ".Text" et ".code" mais je ne parviens pas à modifier le chemin et mettre à jour.

    Merci d'avance

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tu es sur la bonne piste je pense.
    En bouclant sur les Fields, il faut tester le Type, vérifier qu'il soit bien wdFieldLink.
    Si c'est le cas, tu peux modifier la propriété LinkFormat.SourceFullName.

    Je n'ai pas fait de test, mais essaie déjà avec ça.

    PS : C'est du VBA Word et non Excel...

    Voici un bout de code que j'ai testé. Ca à l'air de marcher, je n'ai pas préparé de documents pour faire des tests plus importants. Il faut juste se méfier car j'ai l'impression que quand tu changes le SourceFullName, il créé un autre Field.

    Après, j'ai mis un fichier bidon, mais il faut adapter en fonction de ce que tu veux faire (le même fichier pour tous les liens, juste le chemin qui change pour chaque fichier...)
    Il y a aussi des propriétés pour modifier les plages concernées et tout.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim f As Field
    Dim i As Integer
     
    For i = 1 To ThisDocument.Fields.Count
        Set f = ThisDocument.Fields(i)
     
        If f.Type = wdFieldLink Then
            f.LinkFormat.SourceFullName = "D:\Classeur1.xls"
        End If
    Next i

  3. #3
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut re
    Je te remercie pour ce bout de code qui est plus propre et plus net que le miens, mais nous sommes sur le meme fonctionnement.
    Il semblerait pourtant que cela ne fonctionne pas parfaitement, du moins avec mon code, a savoir que sur d'ancien document la modification ne se fait pas, alors que si je créer un nouveau doc et un nouvel objet le code fonctionne parfaitement.

    Je re teste avec ton code et reviens vers toi pour je l'espere cloturer ce sujet et te remercier...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    For Each aField In ActiveDocument.Fields
            With aField
            If .Type = wdFieldLink Then
            With .LinkFormat
                .SourceFullName = "W:\ECM\Exploitation\2012\Rapports d'exploitation\CBRE\MONTREUIL - Terra Nova II\2012 Conso_Terra Nova II HQE.xls"
                .AutoUpdate = True
           End With
            End If
            End With
        Next aField

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Il faut se méfier du For ... Each, car comme je te le disais, j'ai l'impression qu'il créé un nouveau Field quand on modifie le chemin, du coup, ça risque de tourner en boucle.

  5. #5
    Membre expérimenté Avatar de CODYCO
    Homme Profil pro
    Webplanneur
    Inscrit en
    Avril 2009
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webplanneur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 217
    Par défaut
    Bon avec ton code j'ai bien avancé voila ou j'en suis :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    Sub liaison()
    'Mise à jour du chemin de liaison avec excel
    Dim f As Field
    Dim i As Integer
    Dim Source As Variant
    Dim objExcel
     
    Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = False
    Set objExcel = Application.FileDialog(msoFileDialogFilePicker)
    With objExcel
    If .Show = -1 Then
                For Each Source In .SelectedItems
                    chemin = Source
                Next Source
    End If
    End With
     
    'Boucle et compte le nombre d'objet du document
    For i = 1 To ThisDocument.Fields.Count
        Set f = ThisDocument.Fields(i)
    'Vérifie le type d'objet, si bien un objet coller excel, alors change le chemin source
        If f.Type = wdFieldLink Then
                f.LinkFormat.SourceFullName = chemin 
        End If
    Next i
    End Sub
    L'ouverture de la boite de dialogue permet à l'utilisateur de définir le fichier de liaison stocker dans la variable chemin.

    Tout fonctionne bien, sauf le problème des graphiques, il plante sur la liaison des graphiques.

    Dans le label du "Field" il ne trouve de correspondance de cellule (cellule vide)

    Je pense que le type du Field pour les graphique est différent et qu'il doit etre testé, mais je ne trouve pas quel est le type OLE pour les graphiques.

    Avez vous une idée pour ce problème?

    Merci

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    J'avais trouvé celui pour les plages de cellules en jouant avec le débuggeur, tu dois pouvoir faire pareil non ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/05/2015, 09h52
  2. [AC-2003] Liaison avec Word
    Par SuzyR dans le forum Access
    Réponses: 2
    Dernier message: 14/06/2013, 15h12
  3. [XL-2007] MACRO liaison avec WORD
    Par plimosin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/11/2012, 11h58
  4. copier avec une liaison de word vers Excel
    Par oduss dans le forum Excel
    Réponses: 2
    Dernier message: 28/12/2007, 09h44
  5. Réponses: 2
    Dernier message: 13/12/2006, 14h33

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