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 :

[VBA-E] Graphique et position


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut [VBA-E] Graphique et position
    Bonjour,

    Désireux de faire un graphique à l'aide d'une macro vba, et ne sachant comment faire, j'ai fait un enregistrement afin de trouver les différents critères correspondant. J'obtiens donc le code suivant :
    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
        Range("A4:C8").Select
        Range("C8").Activate
        Charts.Add
        ActiveChart.ChartType = xlColumnClustered
        ActiveChart.SetSourceData Source:=Sheets("Passé").Range("A4:C8"), PlotBy:= _
            xlColumns
        ActiveChart.Location Where:=xlLocationAsObject, Name:="Passé"
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = _
            "Données historiques en croissance géométrique"
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
        End With
        ActiveChart.HasLegend = True
        ActiveChart.Legend.Position = xlBottom
    Après étude et modification j'obtiens ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        Charts.Add
        With ActiveChart
            .ChartType = xlColumnClustered
            .SetSourceData Source:=Sheets("Passé").Range(Sheets("Passé").Cells(1, 4), Sheets("Passé").Cells(ligne, colonne)), PlotBy:= _
            xlColumns
            .Location Where:=xlLocationAsObject, Name:="Passé"
            .HasTitle = True
            .ChartTitle.Characters.Text = "Données historiques en croissance " & Sheets("Passé").Cells(2, 1).Value
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
            .HasLegend = True
            .Legend.Position = xlBottom
        End With
    Cependant ce code me renvoi une erreur au moment de l'exécution de
    L'erreur est
    Erreur d'exécution '-2147221080 (800401a8)': Erreur Automation
    Pourriez vous me dire quelle est l'erreur car je ne comprend pas vraiment

    Enfin pour finir je souhaite mettre ce graphique à une place bien particulière, j'ai trouver ce code en recherchant dans les sujets déjà posté mais je n'ai pas réussi a l'utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveSheet.ChartObjects(1).Left = Range("E5").Left
    ActiveSheet.ChartObjects(1).Top = Range("E5").Top
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    tu peux tester cette synthaxe

    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
     
    Charts.Add
        With ActiveChart
            .ChartType = xlColumnClustered
            .SetSourceData Source:=Sheets("Passé").Range(Sheets("Passé").Cells(1, 4), _
            Sheets("Passé").Cells(ligne, colonne)), PlotBy:=xlColumns
            .Location Where:=xlLocationAsObject, Name:="Passé"
        End With
     
        With ActiveChart
            .HasTitle = True
            .ChartTitle.Characters.Text = "Données historiques en croissance " & _
            Sheets("Passé").Cells(2, 1).Value
            .Axes(xlCategory, xlPrimary).HasTitle = False
            .Axes(xlValue, xlPrimary).HasTitle = False
            .HasLegend = True
            .Legend.Position = xlBottom
        End With

    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.ChartObjects(1).Left = Range("E5").Left
    ActiveSheet.ChartObjects(1).Top = Range("E5").Top

    fonctionne bien chez moi (Excel2002)


    bonne soiree
    michel

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 66
    Par défaut
    Bonjour

    Je suis moi aussi en plein projet de création de graphique

    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
     
    'Je crèe le graphique
    Dim ObjChart As Chart
    Set ObjChart = Workbooks(nomWBK).Charts.Add 
     
    '...
     
    '...J'ajoute mes séries
    Set ObjxRange = Feuille.Range( _
       Feuille.Cells(2, CX), _
       Feuille.Cells(nbVille + 1, CX))
    For i = 1 To 5
       Do While Feuille.Cells(ligne, CReg) = Feuille.Cells(ligne2 + 1, CReg)
          ligne2 = ligne2 + 1
       Loop
       Set ObjyRange = Feuille.Range( _
          Feuille.Cells(ligne, cY), _
          Feuille.Cells(ligne2, cY))
       With ObjChart.SeriesCollection(i)
          .Values = ObjyRange
          .XValues = ObjxRange
          .Name = Feuille.Cells(ligne, CReg)
          .MarkerStyle = i
       End With
       ligne = ligne2 + 1
       ligne2 = ligne2 + 1
    Next i
    C'est après cette ligne que tout s'emballe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ObjChart.Location Where:=xlLocationAsObject, Name:=Feuille.Name
    je veux réutiliser objchart pour modifier des proriétés,mais j'ai moi aussi une erreur automation,
    je suis obligé de placer cette ligne en dernier, savez vous pourquoi ?
    Je voudrai bien pouvoir modifier la taille des formes et leur police(légendes, zones de textes...)...
    comment faire??

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2006
    Messages : 66
    Par défaut
    j'ai trouve la reponse à ma question
    il faut refaire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set objchart=Feuille.ChartObjects(1).chart
    pour éviter l'erreur automation

    j'ai trouve la syntaxe des formes et les polices grâce à l'enregistreur de macro...

  5. #5
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    Pour ceux qui est du deplacement du graphique tu peux également faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Ton graphe porte le nom de "toto"
    With ActiveSheet.Shapes("toto")
            .Left = Range("D1").Left
            .Top = Range("D1").Top
    End With
    Et voila

Discussions similaires

  1. [VBA-E]Graphique Excel
    Par shinobi dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/04/2006, 13h40
  2. [VBA-E] graphique avec plage de donnees variable
    Par gigs dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 03/04/2006, 14h50
  3. [VBA-E]Graphique
    Par kasjacques dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/03/2006, 17h56
  4. [VBA-E]graphique excel dans un userform
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/03/2006, 09h03
  5. [CrystalReports 8.5]Graphique 3D : position des étiquettes
    Par caubry dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 01/09/2004, 11h17

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