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 :

Coller graphique avec mise en forme source [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut Coller graphique avec mise en forme source
    Bonjour,

    Je cherche à copier-coller un graphique en conservant la mise en forme source avec VBA, mais je n'arrive pas à trouver la syntaxe. Je connais la syntaxe avec pasteSpecial, mais cela s'applique à des cellules et non pas à des graphiques. J'ai essayé avec l'enregistreur de macro (pour coller : clique droit > conserver mise en forme source), mais il me sort ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveChart.ChartArea.Copy
        Range("A1").Select
    Aucun code concernant le collage !? Il s'arrête à la sélection de la cellule où je vais coller.
    Connaissez-vous la syntaxe associé à ce copier-coller en conservant la mise en forme source pour un graphique?

    Merci d'avance

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 590
    Par défaut
    Bonjour

    La copie d'un graphique ne modifie pas son aspect sauf éventuellement couleurs basées sur la thème actif.

    Peux-tu être plus précis sur le PB que tu rencontres.

  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Ce sont justement les couleurs basées sur le thème actif que je veux conserver.
    Quand, je fais la manipulation à la main (clique droit > conserver la mise en forme source), j'ai le résultat que j'aimerais obtenir, mais je n'arrive pas à trouver l'équivalent en macro.
    Voici le grahique initial :
    Nom : graph1.png
Affichages : 2306
Taille : 6,8 Ko
    Dans une autre feuille qui n'a pas les mêmes couleurs de thème, si je fais un copier-coller normal (ctrl+C - ctrl+V), j'obtiens :
    Nom : graph2.png
Affichages : 2343
Taille : 9,2 Ko
    Si, je fais un copier-coller en conservant la mise en forme source, comme cela :
    Nom : graph3.png
Affichages : 2430
Taille : 11,9 Ko
    J'obtiens :
    Nom : graph4.png
Affichages : 2269
Taille : 8,7 Ko
    Ce que j'aimerais obtenir grâce à VBA.

  4. #4
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Coller graphique avec mise en forme source
    Avec excel 2 000 avec l'enregistreur de macro j'arrive à ceci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro1()
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveChart.ChartArea.Select
        ActiveChart.ChartArea.copy
        Sheets("Feuil2").Select
        ActiveSheet.Paste
     
    End Sub
    Ensuite avec la Macro1, j'ai le résultat que tu souhaite

    bonne journée.

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Feuil1").ChartObjects("Graphique 1").Chart.ChartArea.Copy
     
    Worksheets("Feuil2").Range("M12").PasteSpecial xlPasteFormats

  6. #6
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Merci pour ta réponse, a_diard. C'est ce que j'avais fait en premier jet, mais ceci correspond à un copier-coller basique et ne conserve donc pas la mise en forme source.

    EDIT : je viens de voir le message de mercatog, merci J'ai aussi essayé cette syntaxe, mais j'obtiens le message d'erreur "La méthode PasteSpecial de la classe Worksheet a échoué". J'ai l'impression que pasteSpecial ne marche que pour des plages de cellules, mais peut-être ai-je tord ?

  7. #7
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    J'ai essayé ceci, pour moi ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub copy()
     
     
      ActiveSheet.ChartObjects("Graphique 1").copy
     
    Worksheets("Feuil2").Range("A1").PasteSpecial (xlPasteAll)
     
     
    End Sub
    avec le code de mercatog, j'avais la même erreur que toi.

    bonne journée.

  8. #8
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Déjà essayé aussi Mais cela donne une image, et pas un graphique. C'est déjà pas mal, mais j'aurais préféré avoir un graphique (sur lequel on peut passer la souris pour pouvoir lire les valuers des données, par exemple).
    Merci pour toutes ces propositions

  9. #9
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Chez moi j'ai un graphique ?????

    Avec les mêmes données source que le graphique d'origine.

  10. #10
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    hmm... c'est étrange, parce que j'ai une image, si j'utilise PasteSpecial(xlPasteAll) ... Serait-ce du aux versions d'Excel?? Ca m'étonne...
    Nom : graphique1.png
Affichages : 2270
Taille : 71,3 Ko

  11. #11
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'avais testé sur Xl 2010

    Sinon, essaies ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
    Worksheets("Feuil1").ChartObjects("Graphique 1").Chart.ChartArea.Copy
     
    Worksheets("Feuil2").Activate
    Range("A12").Select
    Application.CommandBars.ExecuteMso "PasteSourceFormatting"
    End Sub

  12. #12
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 590
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 590
    Par défaut
    Bonjour
    Citation Envoyé par a_diard Voir le message
    Chez moi j'ai un graphique ?????

    Avec les mêmes données source que le graphique d'origine.
    Les thèmes n'existent pas encore dans Office 2000 : tu ne peux pas reproduire les mêmes effets.
    Citation Envoyé par mercatog Voir le message
    ...Sinon, essaies ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Application.CommandBars.ExecuteMso "PasteSourceFormatting"
    ...
    OK chez moi.

    Question à riaolle : sur 2010, le thème est attaché au classeur pas à la feuille. Es-tu dans le même classeur ? JUste pour savoir si 2016 a évolué sur ce point.

  13. #13
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CommandBars.ExecuteMso "PasteSourceFormatting"
    C'est parfait ! Merci !!

    Pour répondre à 78Chris
    : je copie d'un classeur vers un autre. Mais j'ai regardé, le thème est attaché au classeur et non pas à la feuille. En effet, si je me place sur une feuille et que je change le thème, le thème des autres feuilles change aussi. Donc, non, pas d'évolution sur ce point

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 08/12/2014, 09h32
  2. [XL-2013] Copier Coller en conservant la mise en forme source
    Par Marneus22 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/08/2013, 19h33
  3. [PPT-2010] Copier Coller en conservant la mise en forme source
    Par Marneus22 dans le forum VBA PowerPoint
    Réponses: 1
    Dernier message: 29/08/2013, 19h32
  4. [XL-2007] Copie/coller avec mise en forme
    Par Pierre67 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/03/2013, 13h34
  5. [XL-2003] tableau avec mise en forme coller dans autre feuil
    Par antoine2933 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/07/2011, 18h47

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