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 :

Erreur d'excécution 1004 - Erreur définie par l'objet ou l'application [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant Traitement Data Marketing
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Traitement Data Marketing
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Erreur d'excécution 1004 - Erreur définie par l'objet ou l'application
    Bonsoir

    J'ai une macro qui copie en image des graphiques Excel dans un fichier Powerpoint

    J'ai écrit une sub qui définit qui va chercher dans une feuille Excel donnée, le graphique voulu et le colle dans la slide voulue à la bonne place

    La copie se passe correctement, les images sont placées au bon endroit dans le fichier powerpoint.

    Quand j'exécute la macro, parfois j'ai le message d'erreur "Erreur d'excécution 1004 - Erreur définie par l"objet ou l'application".
    Je sélectionne le graphique manuellement, je relance la macro et ça passe ...

    Je suppose qu'il y a soit un pb de mémoire ou une variable qui s'initialise mal

    Voici le code développé :


    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
     
    Option Explicit
     
    'Paramètres fichier PowerPoint
    Dim PptApp As PowerPoint.Application
    Dim PptDoc As PowerPoint.Presentation
    Dim Diapo As PowerPoint.Slide
    Dim NbShpe As Integer
     
    'Paramètres des Logos
    Dim Nom_Image As String
    Dim Nom_Logo As String
     
    'Paramètres des Graphiques
    Dim Nom_Feuille As String
    Dim Nom_Graphique As String
    Dim Numero_Slide As Integer
    Dim Slide_Graph As String
    Dim Pos_Hz As Integer
    Dim Pos_Vt As Integer
    Dim Pos_Ht As Integer
    Dim Pos_Lg As Integer
     
    Sub ExportXlsxPptx()
     
    Application.CutCopyMode = False
     
    'Ouverture Maquette Powerpoint
    Set PptApp = New PowerPoint.Application
    PptApp.Visible = True
    Set PptDoc = PptApp.Presentations.Open(ThisWorkbook.Path & "\" & "Maquette 2016 vs 2015.pptx")
     
    Workbooks("Données 2016 vs 2015").Activate
     
    'Slide 12
    Call Ajout_Graph("1 - Profil", "Graphique 1", 12, 111, 304, 119, 88)
    Call Ajout_Graph("1 - Profil", "Graphique 2", 12, 111, 304, 416, 88)
    Call Ajout_Graph("1 - Profil", "Graphique 3", 12, 111, 304, 119, 280)
     
    'Slide 13
    Call Ajout_Graph("2 - Profil - PRATIQUANTS", "Graphique 1", 13, 152, 322, -29, 35)
    Call Ajout_Graph("2 - Profil - PRATIQUANTS", "Graphique 2", 13, 122, 259, 392, 63)
     
     
    PptDoc.SaveAs Filename:=ThisWorkbook.Path & "\" & "En Cours 2016 vs 2015.pptx"
    PptDoc.Close
    PptApp.Quit
     
    End Sub
     
    Sub Ajout_Graph(Nom_Feuille, Nom_Graphique, Numero_Slide, Pos_Ht, Pos_Lg, Pos_Hz, Pos_Vt)
     
    'Nom feuille / Nom Graphique / Numéro Slide / Hauteur / Largeur / Horizontal / Vertical
     
    Application.CutCopyMode = False
     
    ActiveWorkbook.Sheets(Nom_Feuille).Activate
     
    ActiveSheet.ChartObjects(Nom_Graphique).Copy
     
    PptDoc.Slides(Numero_Slide).Shapes.PasteSpecial ppPasteEnhancedMetafile
     
    NbShpe = PptDoc.Slides(Numero_Slide).Shapes.Count
     
    With PptDoc.Slides(Numero_Slide).Shapes(NbShpe)
        .Left = Pos_Hz 'position horizontale dans le slide
        .Top = Pos_Vt 'position verticale dans le slide
        .Height = Pos_Ht 'hauteur image
        .Width = Pos_Lg 'largeur image
    End With
     
    End Sub


    Merci pour votre aide

    Eddie

  2. #2
    Membre régulier
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 178
    Points : 89
    Points
    89
    Par défaut
    Bonsoir Eddie69003,

    À quelle ligne renvoie le message d'erreur?

    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant Traitement Data Marketing
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Traitement Data Marketing
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    A la ligne 59, quand je sélectionne le graphique... c'est comme s'il ne le trouvait pas : le graphique existé bien dans l'excel.


    Eddie

  4. #4
    Membre régulier
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 178
    Points : 89
    Points
    89
    Par défaut
    Et lors de quel appel l'erreur apparaît-elle?

    Ligne 36, 37, 38, 41 ou 42?

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour,
    si, en mode création, tu cliques-droit sur ton graphique "Graphique 1" (par exemple) puis choisis "affecter une macro", tu vas pouvoir découvrir que son nom d'objet n'est pas "Graphique 1", mais "Graphique1"
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #6
    Candidat au Club
    Homme Profil pro
    Consultant Traitement Data Marketing
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Traitement Data Marketing
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Dédé6621 Voir le message
    Et lors de quel appel l'erreur apparaît-elle?

    Ligne 36, 37, 38, 41 ou 42?
    cela n'apparait pas toujours sur le même appel ... souvent sur la 3

    Citation Envoyé par unparia Voir le message
    Bonjour,
    si, en mode création, tu cliques-droit sur ton graphique "Graphique 1" (par exemple) puis choisis "affecter une macro", tu vas pouvoir découvrir que son nom d'objet n'est pas "Graphique 1", mais "Graphique1"

    j'ai fait le test et c'est bien "Graphique 1", "Graphique1" ne fonctionne pas

  7. #7
    Membre régulier
    Homme Profil pro
    Finance d'entreprise
    Inscrit en
    Juin 2016
    Messages
    178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Finance d'entreprise
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juin 2016
    Messages : 178
    Points : 89
    Points
    89
    Par défaut
    Sans grande conviction, essaye peut-être avec l'index du graphe, plutôt qu'avec son nom.

  8. #8
    Candidat au Club
    Homme Profil pro
    Consultant Traitement Data Marketing
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Traitement Data Marketing
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    merci pour ton aide mais j'ai également testé et j'ai le même soucis

    je vais essayer de "tuer" l'objet "pptdoc.XXX" = nothing à la fin de la sous-sub mais il faut que je définisse l'objet différemment je pense

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant Traitement Data Marketing
    Inscrit en
    Décembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant Traitement Data Marketing
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2016
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Bonjour

    J'ai résolu mon problème en ajoutant une ligne avant la ligne 59 en sélectionnant l'objet avant de le copier

    Avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ActiveWorkbook.Sheets(Nom_Feuille).Activate
     
    ActiveSheet.ChartObjects(Nom_Graphique).Copy
     
    PptDoc.Slides(Numero_Slide).Shapes.PasteSpecial ppPasteEnhancedMetafile

    Après :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ActiveWorkbook.Sheets(Nom_Feuille).Activate
     
    ActiveSheet.ChartObjects(Nom_Graphique).Select
     
    ActiveSheet.ChartObjects(Nom_Graphique).Copy
     
    PptDoc.Slides(Numero_Slide).Shapes.PasteSpecial ppPasteEnhancedMetafile

    Merci à ceux qui ont cherché à m'aider

    Eddie

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

Discussions similaires

  1. [XL-2007] Erreur d'exécution '1004' Erreur définie par l'application ou par l'objet
    Par AKMMM dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/06/2014, 12h12
  2. [XL-2010] Erreur d'execution 1004: Erreur définie par l'application ou par l'objet
    Par Grolligrolla dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/12/2013, 15h19
  3. Erreur d'exécution 1004 Erreur définie par l'application ou par l'objet
    Par felixismad dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/08/2013, 12h36
  4. [XL-2003] Erreur d'éxécution 1004 Erreur définie par l'application ou par l'objet
    Par tokis dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/06/2012, 14h18
  5. Erreur d'exécution 1004. Erreur définie par l'application ou par l'object
    Par Quentin15 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/06/2011, 20h59

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