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 :

recuperer 1 graphique excel vers VB


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut recuperer 1 graphique excel vers VB
    Bonjour, j arrive a lancer un graphique excel grace a mes données VB, mais lorsque je veux le récupérer, je ný arrive pas. Le graphique est dans le presse-papier mais il ne revient pas dans mon image.
    Pourtant je lui est écrit: Bilan.Image1.Picture=clipboard.getdata() avec 2,3,8 ou 9 comme valeur pour la ().
    C est un programme que j ai récupéré ou il y a au début `Mise à jour de l´indicateur graphique--->bilan.graphique="CreationGraphiqueReponses", et j ai mis ca en commentaire car le ".graphique" ne me parlait pas.
    Est-ce ca la clé de l´énigme?
    Auriez-vous la solution?
    Merci d´avance,
    Thomas

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Juste au cas... peut-être que tu sais déjà!

    À propos du presse-papiers:
    Avant de placer quelque chose dans le presse-papiers, il est bon de le vider
    Pour récupérer une image dans le presse-papier, c'est une bonne idée d'interroger d'abord le presse-papier pour connaître le type de contenu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Clipboard.GetFormat(8) then
    où 8 représente un DIB

    À propos d'un graphique Excel:
    Tu devrais utiliser un contrôle MsChart (ou quelque chose du genre) parce que les contrôles PictureBox ou Image contiennent des images, pas des graphiques vectoriels liés à des données.

  3. #3
    Membre habitué
    Inscrit en
    Mai 2002
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 163
    Points : 173
    Points
    173
    Par défaut
    regarde aussi du coté des objets OLE

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    montre nous tout le code à partir de la selection du graphe Excel

  5. #5
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut Bidou, merci d avoir jeté un oeil,
    pour le programme il est dans un autre sujet un tt ptit peu plus bas qui
    s appelle "mon prog pour recup un graph excel a un bug". Merci d´avance.Thomas.

  6. #6
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Eviter les multi post sinon on ne s'en sortira jamais

    Essayes avec xlApp.ActiveChart.CopyPicture c'est à dire sans le ChartArea

  7. #7
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je viens d´essayer sans le ChartArea, mais ca ne change rien

  8. #8
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlApp.ActiveChart.Chart.CopyPicture

  9. #9
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    j ai testé:
    xlApp.ActiveChart.AreaChart.CopyPicture
    xlApp.ActiveChart.CopyPicture
    xlApp.ActiveChart.Chart.CopyPicture
    avec
    exemple.Image1.Picture=Clipboard.GetData(2)
    exemple.Image1.Picture=Clipboard.GetData(3)
    exemple.Image1.Picture=Clipboard.GetData(8)
    exemple.Image1.Picture=Clipboard.GetData(9)

    j ai fait ces associations dans tous les sens, j ai mm essayé avec Picture1.Picture. C est qd mm bizarre. Alors que mon graphe apparait bien dans le presse-papier excel.

  10. #10
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    moi ca marche avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set MaPlage = MaFeuille.Range(MaFeuille.Cells(1, 1), MaFeuille.Cells(50, 2))
    MaPlage.FormulaLocal = "=LIGNE()*COLONNE()"
    Set mongraphe = MaFeuille.ChartObjects.Add(10, 10, 100, 100)
    mongraphe.Chart.SetSourceData MaPlage
    mongraphe.CopyPicture
    Picture1.Picture = Clipboard.GetData()

  11. #11
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bidou, je suis relou mais j arrive pas a voir les differences entre ton programme et le mien. Je joints mon prog, si tu pouvais jeter un oeil...ca serait genial.

    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
    Option Explicit 
    Sub CreationGraphiqueRéponses() 
        'Crée le graphique pour la revue éditée dans la fenetre Principale 
        '-Statistique des réponses renseignées 
        Dim Langue As String 
        Dim AmortissementAir, AmortissementAzote, i As Integer 
        Dim xlApp, xlSheet, xlGraph As Object 
     
        'Mise à jour de l'indicateur graphique 
        'Principale.Graphique = "CreationGraphiqueRéponses" 
        On Error GoTo Fin 
        Screen.MousePointer = vbHourglass 
        'Informe "Ouverture de Excel", "Excel openning" 
        'Calcul des données nécessaires au graphique 
        AmortissementAir = Bilan.AmortAir.Text 
        AmortissementAzote = Bilan.AmortAzote.Text 
        'Ouverture d'une instance d'Excel 
        Set xlApp = CreateObject("Excel.Application") 
        'Excel travaille en arrière-plan 
        xlApp.Visible = True 
        xlApp.DisplayAlerts = True 'Pas de message intempestifs au moment de la fermeture 
        'Ajout d'un classeur 
        xlApp.Workbooks.Add 
        'Ajout d 'une feuille dans le classeur 
        Set xlSheet = xlApp.Workbooks(1).Sheets(1) 
        'Informe "Création du graphique", "Preparation of the chart" 
        'Ecriture des légendes nécessaires au graphique 
        'Langue = Principale.ComboLangueLogiciel.Text 
        xlSheet.Range("A1").Select 
        If Langue = "Français" Then 
            xlSheet.Range("A1").FormulaR1C1 = "Amortissement"      
        Else 
            xlSheet.Range("A1").FormulaR1C1 = "Amortissement" 
        End If 
        xlSheet.Range("B1").FormulaR1C1 = Str(AmortissementAir) 
        xlSheet.Range("C1").FormulaR1C1 = Str(AmortissementAzote) 
        'Ajout d'un graphique 
        xlApp.Charts.Add after:=xlApp.Worksheets("Feuil1") 
     
    With xlApp.ActiveChart 
            .ChartType = 54 'xl3DPieExploded 
            .SetSourceData Source:=xlSheet.Range("A1:C8"), PlotBy:=8 ' _ 
                'xlColumns 
            '.Location Where:=2, Name:="Graph1" 'xlLocationAsObject 
            '.HasTitle = False 
            .ApplyDataLabels Type:=5, LegendKey:=False, _ 
                HasLeaderLines:=True 'xlDataLabelsShowValue 
            'Suppression du rectangle gris 
            .PlotArea.Select 
            xlApp.Selection.ClearFormats 
            'Grossissement de la police de la légende 
            .Legend.Select 
            xlApp.Selection.AutoScaleFont = True 
            With xlApp.Selection.Font 
                .Name = "Arial" 
                .FontStyle = "Normal" 
                .Size = 14 
            End With 
            'Déplacement de la légende 
            xlApp.Selection.Left = 540 
     
            'Grossissement de la police des étiquettes 
            .SeriesCollection(1).DataLabels.Select 
            xlApp.Selection.AutoScaleFont = True 
            With xlApp.Selection.Font 
                .Name = "Arial" 
                .FontStyle = "Normal" 
                .Size = 14 
            End With 
            'Copie le graphique dans le presse-papier 
            xlApp.ActiveChart.ChartArea.CopyPicture 
        End With 
     
        'Récupération du graphique dans l'image via le Presse-Papier 
        exemple.Image1.Picture = Clipboard.GetData( )

  12. #12
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    si j'écris ton code comme suit, ca marche chez moi

    'Crée le graphique pour la revue éditée dans la fenetre Principale
    '-Statistique des réponses renseignées
    Dim Langue As String
    Dim AmortissementAir, AmortissementAzote, i As Integer
    Dim xlApp, xlSheet, xlGraph As Object

    'Mise à jour de l'indicateur graphique
    'Principale.Graphique = "CreationGraphiqueRéponses"
    'On Error GoTo Fin
    Screen.MousePointer = vbHourglass
    'Informe "Ouverture de Excel", "Excel openning"
    'Calcul des données nécessaires au graphique
    AmortissementAir = "12"
    AmortissementAzote = "20"
    'Ouverture d'une instance d'Excel
    Set xlApp = CreateObject("Excel.Application")
    'Excel travaille en arrière-plan
    xlApp.Visible = True
    xlApp.DisplayAlerts = True 'Pas de message intempestifs au moment de la fermeture
    'Ajout d'un classeur
    xlApp.Workbooks.Add
    'Ajout d 'une feuille dans le classeur
    Set xlSheet = xlApp.Workbooks(1).Sheets(1)
    'Informe "Création du graphique", "Preparation of the chart"
    'Ecriture des légendes nécessaires au graphique
    'Langue = Principale.ComboLangueLogiciel.Text
    xlSheet.Range("A1").Select
    If Langue = "Français" Then
    xlSheet.Range("A1").FormulaR1C1 = "Amortissement"
    Else
    xlSheet.Range("A1").FormulaR1C1 = "Amortissement"
    End If
    xlSheet.Range("B1").FormulaR1C1 = Str(AmortissementAir)
    xlSheet.Range("C1").FormulaR1C1 = Str(AmortissementAzote)
    'Ajout d'un graphique
    xlApp.Charts.Add after:=xlApp.Worksheets("Feuil1")

    With xlApp.ActiveChart
    .ChartType = 54 'xl3DPieExploded
    .SetSourceData Source:=xlSheet.Range("A1:C8"), PlotBy:=8 ' _
    'xlColumns
    '.Location Where:=2, Name:="Graph1" 'xlLocationAsObject
    '.HasTitle = False
    .ApplyDataLabels 2, False
    'Suppression du rectangle gris
    .PlotArea.Select
    xlApp.Selection.ClearFormats
    'Grossissement de la police de la légende
    .Legend.Select
    xlApp.Selection.AutoScaleFont = True
    With xlApp.Selection.Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 14
    End With
    'Déplacement de la légende
    xlApp.Selection.Left = 540

    'Grossissement de la police des étiquettes
    .SeriesCollection(1).DataLabels.Select
    xlApp.Selection.AutoScaleFont = True
    With xlApp.Selection.Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 14
    End With
    'Copie le graphique dans le presse-papier
    xlApp.ActiveChart.CopyPicture
    End With

    'Récupération du graphique dans l'image via le Presse-Papier
    Me.Image1.Picture = Clipboard.GetData()
    End Sub

  13. #13
    Candidat au Club
    Inscrit en
    Février 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Miracle. Je ne sais pas très bien pourquoi mais ca marche, c est génial. Merci Bidou pour ce temps passé!!

  14. #14
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    et bravo bidou pour les balises quote au lieu de code

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

Discussions similaires

  1. [XL-2003] Exporter un graphique Excel vers un document Word
    Par Yvanou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/10/2012, 15h49
  2. Graphiques excel vers powerpoint en liaison
    Par lecter85 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/11/2008, 11h56
  3. Graphique excel vers Word
    Par peetersq dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/05/2008, 12h09
  4. Graphique excel vers word
    Par peetersq dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/04/2008, 10h41
  5. Envoie données/Graphiques excel vers powerpoint
    Par meumeu73.1 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 14/01/2008, 15h08

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