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 :

Problème Macro EXCEL to PPT: Run time error '-2147417851 (80010105)': Method 'Visible' of object '_Application [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème Macro EXCEL to PPT: Run time error '-2147417851 (80010105)': Method 'Visible' of object '_Application
    Bonjour à tous,

    J'ai fait le tour des discussion malheureusement je n'ai pas trouvé mon bonheur. J'ai crée une macro vba assez simple qui copie colle des graphes excel dans un power point prédéfinit.

    La macro fonctionne bien puisque j'ai fait plusieurs fois l'opération avec succès sauf que:
    -Elle n'a jamais fonctionné chez mes collègues
    -Elle s'est arrêtée de fonctionner chez moi

    ==>Le message d'erreur est le suivant: Run time error '-2147417851 (80010105)':
    Method 'Visible' of object '_Application' failed

    ==>Il apparait à la ligne ppapp.visible=msotrue en gras dans le code ci-dessous

    J'ai bien vérifié que le les référencement de ppt dans la librairie est coché, j'ai changé calculation bref tout essayé mais depuis deux semaine ça ne veut plus tourner.

    Je vous remercie d'avance pour votre aide,

    Souley

    Le code:



    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Sub test()
    
    
    ' Ajouter la référence à à Microsoft Powerpoint Library
       Dim sPPTRestitution As String
       Dim ppApp As PowerPoint.Application
       Dim ppPres As PowerPoint.Presentation
       Dim cht As Excel.ChartObject
       Dim tbl As Range
       
     
       'Sélectionner le fichier PowerPoint à ouvrir
         sPPTRestitution = Cells(3, 1).Value
     
       'Ouvrir PowerPoint
       
     Set ppApp = CreateObject("PowerPoint.Application")
    
       ppApp.Visible = msoTrue
       Set ppPres = ppApp.Presentations.Open(sPPTRestitution)
       ppApp.ActiveWindow.ViewType = ppViewSlide
    
     
     
    
     
       'Appel de la fonction pour copier graphique dans PowerPoint
       
       Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("synthese")
       Call copiercollergraph(ppPres, 5, cht, 110, -25)
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("syntheseaxe")
       Call copiercollergraph(ppPres, 5, cht, 120, 220)
    
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("gouvernance")
       Call copiercollergraph(ppPres, 9, cht, 125, -10)
       
         Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("gouvernanceaxe")
       Call copiercollergraph(ppPres, 9, cht, 120, 220)
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("workplace")
       Call copiercollergraph(ppPres, 11, cht, 125, 0)
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("workplaceaxe")
       Call copiercollergraph(ppPres, 11, cht, 120, 220)
       
       Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("datacenter")
       Call copiercollergraph(ppPres, 13, cht, 125, 0)
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("datacenteraxe")
       Call copiercollergraph(ppPres, 13, cht, 120, 220)
       
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("network")
       Call copiercollergraph(ppPres, 15, cht, 120, 0)
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("networkaxe")
       Call copiercollergraph(ppPres, 15, cht, 125, 220)
       
         Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("support")
       Call copiercollergraph(ppPres, 17, cht, 120, 0)
       
        Set cht = ThisWorkbook.Sheets("Analyse export").ChartObjects("supportaxe")
       Call copiercollergraph(ppPres, 17, cht, 125, 220)
       
       
       Set cht = Nothing
       Set cht = Nothing
       Set ppPres = Nothing
       Set ppApp = Nothing
       
       
       
       
    End Sub
    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
    ' Code pour copier le graphique spécifié dans la présentation
     
    Sub copiercollergraph(oPPT As PowerPoint.Presentation, iSlideNo As Integer, cht As ChartObject, itop As Integer, ileft As Integer)
     
       Dim ppSlide As PowerPoint.Slide
       Dim pSh As PowerPoint.Shape
     
       'Choisir la diapositive
       Set ppSlide = oPPT.Slides(iSlideNo)
     
       cht.Copy
       With ppSlide
          .Shapes.Paste
          Application.CutCopyMode = False
          Set pSh = .Shapes(.Shapes.Count)  '.Select  'Select the last shape
       End With
     
       'Position et dimensions
       With pSh
          .Top = itop
          .Left = ileft
     
       End With

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Est-ce que tu as coché des références dans l'IDE ?
    Si oui, c'est peut-être un conflit de version (?) Essaie en la/les décochant sauf celles de base et déclare tes variables Powerpoint As Object.
    MPi²

  3. #3
    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,

    Remplace la constante msotrue par sa valeur numérique. Si la référence à PowerPoint est cochée, tu as accès à l'aide de VBA-PowerPoint à partir de l'aide de VBA-Excel.

    Clique sur la constante et ensuite
    À 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.

  4. #4
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Bizarre
    Merci à vous deux pour les réponses rapide.

    1. Qu'est ce que l'IDE?
    2. J'ai décoché les références inutiles, cela ne vient pas de là

    Mais surtout: j'ai redémarré mon ordinateur et la macro tournait parfaitement... Mais toujours en bug chez mon collègue qui pourtant à la même configuration machine/office/excel que moi.

    Du coup je ne sais pas quoi faire parce que cette macro va potentiellement être utilisée par plus de 300 personnes, et je me voit déjà faire le support technique pour chacun d'entre eux si elle n'est pas définitivement stable...

    Encore merci pour votre aide

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    As-tu renommé tes variables Powerpoint As Object ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim ppApp As Object
    Dim ppPres As Object
    MPi²

  6. #6
    Candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut YES
    Top, merci PARMI, le code semble plus stable à présent.
    Je savais pas que je pouvais déclarer des objects powerpoint en object.

    Je mets le topic en résolu, vu le nombre de fois où j'ai trouvé ce probleme dans les forum sans solution, je pense que ça en aiderai plus d'un!

    Encore merci

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Pour ton info, L'IDE, c'est l'environnement de développent de VBA.
    La partie du programme où tu mets tes codes (Alt-F11)

    Bonne continuation !
    MPi²

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

Discussions similaires

  1. VB6 - Problème de compilation avec un Objet - Run-Time Error 91
    Par Hadware dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 18/12/2008, 21h13
  2. Run time error 1004 - Select method class failed
    Par fhuyet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/07/2008, 11h18
  3. Excel 2003 - Run-time error '1004'
    Par GuyRo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/05/2008, 10h20
  4. [Inno-Setup] Problème sur XP : Run-time error '429'
    Par lucas67 dans le forum Installation, Déploiement et Sécurité
    Réponses: 2
    Dernier message: 27/07/2007, 08h47
  5. Excel - macro (format conditionnel - run-time error 1004)
    Par Chewi dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/09/2006, 19h18

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