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 :

Mise a jour de liens, DisplayAlert = false


Sujet :

VBA PowerPoint

  1. #1
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut Mise a jour de liens, DisplayAlert = false
    Bonjour,

    J'ai une presentation powerpoint sur laquelle j'ai copié par laisons des graphiques venant d'excel.
    J'ai une macro qui se charge de mettre a jour les liaisons (car chaque mois le nom du fichiers excel change 112016 -> 122016)
    Cette macro fonctionne bien, mais a chaque mise a jour elle ouvre chaque fichiers excel plusieurs fois et a chaque ouverture excel me demande si je veux mettre mes liens à jour ( et la réponse est nom a chaque fois).
    Quand j'utilise excel seul, je sais la commande DisplayAlert = false empeche cette fenetre d'apparaitre, j'aimerais savoir si il existe une commande similaire pour powerpoint.

    Merci d'avance.

    la macro que j'utilise:
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Public Sub MaJ_modif_lien()
    Dim objPres As Presentation
    Dim objSld As Slide
    Dim objShp As Shape
    Dim strAncien As String
    Dim strNouveau As String
    Dim annee As Integer
    Dim mois As Integer
    Dim val_a As Long
    Dim val_n As Long
    ' suivant le mois on adapte les variables qui servent a modifier les liens
    Select Case Month(Date)
    Case 1
        annee_a = Year(Date) - 1
        mois_a = 11
        annee_n = Year(Date) - 1
        mois_n = 12
    Case 2
        annee_a = Year(Date) - 1
        mois_a = 12
        annee_n = Year(Date)
        mois_n = Month(Date) - 1
    Case Else
        annee_a = Year(Date)
        mois_a = Month(Date) - 2
        annee_n = Year(Date)
        mois_n = Month(Date) - 1
    End Select
    val_a = mois_a * 10000 + annee_a
    val_n = mois_n * 10000 + annee_n
    'val_a = mois_a + 100 * annee_a
    'val_n = mois_n + 100 * annee_n
    If mois_n < 10 Then mois_n = "0" & mois_n
    If mois_a < 10 Then mois_a = "0" & mois_a
    '2016\RSS_102016.xlsm
     
     Application.DisplayAlerts = False
        Set objPres = ActivePresentation
     
        ' parcourt des diapositives de la présentation
        For Each objSld In objPres.Slides
            ' parcourt des formes des diapositives
            For Each objShp In objSld.Shapes
                ' on test si c'est un objet lié
                If objShp.Type = msoLinkedOLEObject Then
                ' si oui on modifie les dates dans le chemin
                    strAncien = objShp.LinkFormat.SourceFullName
                    'strNouveau = Replace(strAncien, val_a, val_n)
                    strNouveau = Replace(strAncien, annee_a, annee_n)
                    strNouveau = Replace(strNouveau, mois_a, mois_n)
                    'strNouveau = Replace(strNouveau, ".xlsx", ".xlsm")
     
                    MsgBox "ancien: " & strAncien & Chr(10) & "nouveau: " & strNouveau
                    objShp.LinkFormat.SourceFullName = strNouveau
     
     
                    'on met à jour les liens
                    objShp.LinkFormat.Update
                     'MsgBox "ancien: " & strAncien & Chr(10) & "nouveau: " & strNouveau
                    DoEvents
                End If
            Next objShp
        Next objSld
     
     Application.DisplayAlerts = True
    End Sub
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  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 halaster08 Voir le message
    Bonjour,

    mais a chaque mise a jour elle ouvre chaque fichiers excel plusieurs fois et a chaque ouverture excel me demande si je veux mettre mes liens à jour ( et la réponse est nom a chaque fois).
    Quand j'utilise excel seul, je sais la commande DisplayAlert = false empeche cette fenetre d'apparaitre, j'aimerais savoir si il existe une commande similaire pour powerpoint.
    Oui, du moins dans PowerPoint 2013 et dans PowerPoint 2016. Mais, en fait c'est DisplayAlerts

    Pour 2010, tu peux regarder dans ton aide, ou juste l'essayer dans ton code. S'il est disponible, tu devrais le retrouver dans la boîte de l'IntelliSense après avoir tapé application et le point.

    Sinon, il y a aussi l'Explorateur d'objets. (Clique sur application (ou tout autre objet) dans la colonne de gauche et les membres sont affichés dans la colonne de droite.

    Ajouté:

    La propriété est aussi disponible dans PowerPoint 2010.
    À 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
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Merci pour ta réponse.
    Je me suis mal exprimé.
    Oui displayalerts existe en ppt, il est dans mon code et fonctionne.
    Mais quand il est dans la macro powerpoint il enleve les alertes de powerpoint, pas celles d'excel, or pendant la mise a jour il ouvre excel et excel me pose des questions.
    C'est ces alertes là que j'aimerais enlever, mais je ne sais pas comment.

    edit:
    La commande que j'utilise c'est application.displayalerts = false, or application fait ici référence a powerpoint, j'aimerais lui dire un truc du genre excel.displayalerts = false, mais je ne sais pas comment.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

Discussions similaires

  1. [AC-2007] Mise a jour des liens de tables liees via VBA
    Par Frendy13 dans le forum VBA Access
    Réponses: 1
    Dernier message: 29/07/2010, 22h00
  2. Réponses: 2
    Dernier message: 27/06/2006, 08h35
  3. Réponses: 10
    Dernier message: 28/02/2006, 21h21
  4. Mise à jour du lien
    Par juliea dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/04/2005, 17h05
  5. Mise à jour du lien
    Par juliea dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/04/2005, 15h10

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