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 :

Macro pour lancer un graphique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut Macro pour lancer un graphique
    Bonjour,
    je débute en excel et j'aimerais faire une macro qui me retourne un graphique (qui sera dans la feuille excel).
    Je suis en train de suivre un tutoriel mais ça ne fonctionne pas.
    Admettons que j'ai des données sur les cases A1:B6 et que j'aimerais un graphique avec. Voilà comment j'ai procédé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub graphiqueincorpore()
     
    Dim mongrahe As Chart, mafeuille As Worksheet, plagedonnees As Range
    Set mafeuille = ThisWorkbook.Worksheets("feuil1")
    With mafeuille
        Set plagedonnes = .Range(.Cells(1, 1), .Cells(1, 1).End(xlDown)).Resize(, 2)
        Set mongraphe = .ChartObjects.Add(100, 100, 300, 200).Chart
    mongraphe.ChartArea.Clear
    mongraphe.ChartType = xlXYScatter
    mongraphe.SetSourceData plagedonnes
    End With
    End Sub
    mais ça plante à la ligne mongraphe.SetSourceData plagedonnes
    voilà j'ai pas trop d'idée vu que c'était la marche à suivre dans mon tutoriel.

    Est ce que quelqu'un peut me donner la bonne manip svp ?

    merci beaucoup

  2. #2
    Membre Expert
    Avatar de cb_60
    Homme Profil pro
    Chargé de mission technique
    Inscrit en
    Juillet 2007
    Messages
    1 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé de mission technique
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 253
    Billets dans le blog
    14
    Par défaut
    Bonjour
    l'erreur ne serait pas sur cette ligne:
    Dim mongraphe As Chart, mafeuille As Worksheet, plagedonnees As Range

    car chez moi ton code fonctionne ( excel 2003)
    L'imagination est plus importante que le savoir.... A . Einstein. :pastaper:
    https://www.developpez.net/forums/blogs/179588-cb_60/
    Merci de cliquer sur :resolu:pour clore cette discussion.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    Bonjour,
    Pardon j'avais oublié de préciser que j'utilisais excel 2007, j'ai corrigé la faute de frappe mais toujours la même erreur "Erreur d'exécution, la méthode 'SetSourceData' de l'objet '_chart' a échoué", ça doit sans doute venir d'un problème de compatibilité.
    Connais-tu un autre code pour avoir le même résultat stp ?
    merci beaucoup

  4. #4
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    essaye en nommant ton graphique avant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mongraphe.name = "Lenomdemongraph"

    Edit1 : une exemple perso qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Set MyG = Charts.Add(After:=ThisWorkbook.Sheets(Sheets.Count))
     
    With MyG
        .Name = MyChartName
        .ChartType = xl3DColumnClustered
        .SetSourceData Source:=MyCell, PlotBy:=xlColumns
        .Location Where:=xlLocationAsNewSheet
        .HasTitle = True
        .HasDataTable = True
        .ChartTitle.Characters.Text = "Activité" & " Nb de jours : " & NbJourTot   'Nb jour total
        .Rotation = 20
        .Perspective = 30
        .RightAngleAxes = True
    End With

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 23
    Par défaut
    salut,
    merci pour ta réponse, est ce que tu peux me dire si ton graphique s'ouvre dans une nouvelle fenêtre où alors s'il est dans la même fenêtre que le sheet ?
    aussi, est-ce que tu peux me dire ce que tu as mis dans MyCell
    merci beaucoup

  6. #6
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    merci pour ta réponse, est ce que tu peux me dire si ton graphique s'ouvre dans une nouvelle fenêtre où alors s'il est dans la même fenêtre que le sheet ?
    => dans une nouvelle fenetre.

    Comme toi je spécifie une plage de données (plagedonnes)
    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
     
    ' --------------------------------------------------------------------- '
    ' Determination de la plage du graphique
    ' --------------------------------------------------------------------- '
    With Cjours
        Dim MyCell As Range
        Set MyCell = .Cells(.Range("A65536").End(xlUp).Row, 1)
        Dim NbJourTot As String
        NbJourTot = MyCell.Offset(0, 1).Value ' Le nombre de jours total
     
     
        If Not MyCell = "Total" Then
          MsgBox "La derniere ligne de la colonne 1 doit être = totale dans l'onglet" & Cjours.Name
          GoTo fin
        End If
     
        Set MyCell = .Range("A1:D" & MyCell.Row - 1) ' -1 pour ne pas prendre en compte la ligne Total
     
    End With

Discussions similaires

  1. [VBA]Macro pour lancer une recherche dans un tableau
    Par manhes dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2007, 18h08
  2. macro pour lancer une requête
    Par Kleer dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/02/2007, 21h16
  3. [VBA-excel]Probleme de macro pour creer un graphique.
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/07/2006, 15h42
  4. macro pour créer des graphiques
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 09h44

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