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

VBA PowerPoint Discussion :

Changement des liens excel integrés dans les slides


Sujet :

VBA PowerPoint

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Changement des liens excel integrés dans les slides
    Bonjour

    j'ai une presentation PPT qui comporte une cinquantaine de slides avec des tableaux excel intégrés avec des liens.
    ces liens changent tous les mois. jusque là le changement des liens se fait manuellement et le code ci dessous est permet la mise à jour des liens excel et fonctionne correctement une fois tous les liens modifiés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub mise_a_jour()
     
     Dim Forme As Shape
     Dim sld As Slide
     For Each sld In ActivePresentation.Slides
     For Each Forme In sld.Shapes
     If Forme.Type = msoLinkedOLEObject Then
     Forme.LinkFormat.Update
     End If
     Next
     Next
     End Sub
    mais l'idée c'est de pouvoir changer automatiquement tous les 50 liens parce que les copier coller avec les liens c'est vraiement fastidieux
    j'ai adapter le code ci dessous pour un lien pour le changement de lien mais je ne comprends pas pour quoi il ne marche pas , ya pas de message d'erreur et le resultat est indifférent
    en fait les 50 liens sont dans 6 classeurs différents là j'ait le test avec un seul classeur dans le code ci dessous et ça ne cchange pas le lien
    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
    Sub UpdateLinks2()
    Dim oldPath As String, newPath As String
    Dim pptPres As Presentation, pptSlide As Slide, pptShape As Shape
     
    newPath = "U:\REPORTING\ partie P&L 07 2015.xlsx"
    oldPath = "U:\REPORTING\partie P&L 06 2015.xlsx"
     
    'loop on each slides, and on each shapes
    Set pptPres = ActivePresentation
    For Each pptSlide In pptPres.Slides
    For Each pptShape In pptSlide.Shapes
    If pptShape.Type = msoLinkedOLEObject Then 'if it is a "linked object" then
    If pptShape.LinkFormat.SourceFullName = oldPath Then
    pptShape.LinkFormat.SourceFullName = newPath 'modify the link
    pptShape.LinkFormat.Update 'update the link
    End If
    End If
    Next pptShape
    Next pptSlide
    End Sub
    ce code est supposé changer le lien et faire la mise à jour mais rien ne se passe , je ne comprends pas.
    quelqu'un a t il une idée ?

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Daniel117 Voir le message
    Bonjour


    ce code est supposé changer le lien et faire la mise à jour mais rien ne se passe , je ne comprends pas.
    quelqu'un a t il une idée ?
    Tu as un lien séparé pour chaque graphique, et même chaque tableau ou autre élément, d'Excel et la présentation. Ou, en d'autres termes, un graphique égale une liaison, un tableau égale une liaison, dix graphiques égalent dix liaisons etc. Ce que tu veux faire c'est beaucoup plus complexe que de juste changer de fichier Excel.

    En fait, tu dois boucler toutes tes diapositives et tous tes tableaux d'Excel et recréer chaque lien.

    Si tu reprends ta première macro:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub mise_a_jour()
        Dim Forme As Shape
        Dim sld As Slide
        For Each sld In ActivePresentation.Slides
             For Each Forme In sld.Shapes
                  If Forme.Type = msoLinkedOLEObject Then
                          Forme.LinkFormat.Update
                  End If
             Next
        Next
    End Sub
    Ta boucle intérieure prend tous les liens de chaque diapositive et les mets à jour. Ta boucle extérieure fait exécuter ta boucle intérieure sur l'ensemble des diapositives de ta présentation. En fait ta méthode update peut juste "réveiller" un lien existant et ne peut pas en créer de nouveau.

    En gros, tu dois reprendre ta première macro et y ajouter des boucles pour retrouver toutes les informations de tous les classeurs concernés et de littéralement effacer chaque ancien lien avant d'en recréer un nouveau. Il suffit de juste un peu changer le fichier Excel, en scindant des tableaux, ou en modifiant l'ordre ou d'autres détails, pour devoir tout refaire manuellement.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    Bonjour clément,
    En fait je voudrais changer les liens, je ne sais pas si la meilleure solutions c'est de les effacer et récréer de nouveau lien.

    mais je ne trouve pas de propriété permettant d'afficher le lien.
    En gros, tu dois reprendre ta première macro et y ajouter des boucles pour retrouver toutes les informations de tous les classeurs concernés et de littéralement effacer chaque ancien lien avant d'en recréer un nouveau. Il suffit de juste un peu changer le fichier Excel, en scindant des tableaux, ou en modifiant l'ordre ou d'autres détails, pour devoir tout refaire manuellement
    j'ai pas bien compris ce que tu voulais dire clément.

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Il n'y a pas 36 solutions. Pour refaire un lien tu dois détruire l'ancien, et en créer un tout nouveau.

    Avec cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub mise_a_jour()
        Dim Forme As Shape
        Dim sld As Slide
        For Each sld In ActivePresentation.Slides
             For Each Forme In sld.Shapes
                  If Forme.Type = msoLinkedOLEObject Then
                          Forme.LinkFormat.breaklink
                  End If
             Next
        Next
    End Sub
    Tu détruis tous tes anciens liens

    Ensuite pour refaire tes liens avec tes nouveaux fichiers, tu dois boucler tous tes nouveaux fichiers, sélectionner le bon objet au bon moment et faire un pastespecial avec les bons paramètres dans la bonne "shape".

    Linkformat.sourcefullname peut te donner le fichier d'origine, mais ne te donne pas sa position ou son nom dans le fichier.
    Si tu te fais un tableau des sourcefullname tu peux récupérer les noms des fichiers d'origine et déduire les nouveaux noms de fichiers.

    Reste juste à savoir comment ta macro qui devrait faire ça automatiquement va être sûre de toujours sélectionner le bon objet, et juste le bon objet, au bon moment et le placer à la bonne place et sans vérification humaine. Une fois que ce sera fait, il faudra interdire toute modification de la forme et de l'ordre des objets et interdire tout ajout de nouveaux objets.

    Personne n'aura envie de passer trois ou quatre éternités à faire cela et sans garantie que cela ne serait pas à refaire à chaque changement de version d'Office, et surtout pas bénévolement.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Points : 22
    Points
    22
    Par défaut
    salut clément,

    j'ai fait le tableau mais le problème c'est l'affectation d'un nouveau lien à chaque tableau excel sur le ppt.
    en fait j'ai un tableau qui à chaque lien associe le numero de dispositive devant. c'est l'integration de tout ce ceci dans un code qui est problématique.

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Soit que tu fais des collages spéciaux à la main. (En principe tu devrais rendu à une seule fois).

    Sois que tu essaies avec View.Pastesspecial. (Dans l'aide de VBA Powerpoint)
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. Réponses: 29
    Dernier message: 01/07/2006, 09h23
  2. Gestion des versions d'objets dans les SGBD
    Par bennus dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 09/05/2005, 12h57
  3. Réponses: 17
    Dernier message: 18/03/2005, 09h23
  4. Réponses: 10
    Dernier message: 03/09/2004, 17h26

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