VBA : graphique "courbe - histogramme 2 axes"

garth_algar

XLDnaute Junior
Bonjour,
Je souhaiterais créer un graphique avec une macro VBA à partir d'un tableau de trois colonnes.
Je voudrais :
- tracer une courbe avec les données de la deuxième colonne
- un histogramme avec les données de la troisième
- ajouter la 1ère colonne sur l'axe de abscisses

Pour l'instant je ne parviens à faire que deux courbes ou deux histogrammes, et ma première colonne ne figure en abscisses que si elle contient du texte (si elle contient des nombres, j'obtiens une troisième courbe ou histogramme).

Est-il possible de faire ceci ?
Si oui, les données sources peuvent-elles provenir d'un tableau VBA au lieu d'un tableau Excel ?

Merci d'avance pour vos réponses
 

garth_algar

XLDnaute Junior
Re : VBA : graphique "courbe - histogramme 2 axes"

Voici.
Je souhaiterais que Y2 apparaisse sous forme de courbe (avec un second axes des ordonnées à droite) et que la colonne X corresponde à l'axe des abscisses, même quand elle contient des nombres.
 

Pièces jointes

  • graphique vba.xls
    26 KB · Affichages: 561

CB60

XLDnaute Barbatruc
Re : VBA : graphique "courbe - histogramme 2 axes"

re
Essai cela ?
Code:
Sub Graphique()
   Dim Graph As ChartObject
   With ActiveWorkbook.Worksheets(1)
      Set Graph = .ChartObjects.Add(200, 100, 500, 300)
   End With
      
   With Graph.Chart
      .SetSourceData Worksheets(1).Range("A1:C10")
      .HasTitle = True
      .ChartTitle.Text = "essai"
  '    .ChartType = xlLine
      .ApplyCustomType ChartType:=xlBuiltIn, TypeName:= _
        "Courbe - Histo. 2 axes"
    
   End With
End Sub
 

garth_algar

XLDnaute Junior
Re : VBA : graphique "courbe - histogramme 2 axes"

Merci, pour le type de graphique c'est bon.
Peut-on, dans le code, choisir la série qui donne l'histogramme, celle qui donne la courbe, et les étiquettes de l'axe des abscisses, comme on peut le faire avec l'assistant graphique ?
 

CB60

XLDnaute Barbatruc
Re : VBA : graphique "courbe - histogramme 2 axes"

Re
Un peu plus compliqué
Code:
Sub Graphique()
   Dim Graph As ChartObject
   Set CHOIX = Application.InputBox(prompt:="Sélectionnez la plage de cellules pour l'axe.", _
Title:="Plage de cellules", Left:=500, Top:=300, Type:=8)
   With ActiveWorkbook.Worksheets(1)
      Set Graph = .ChartObjects.Add(200, 100, 500, 300)
   End With
 
   With Graph.Chart
      .SetSourceData Worksheets(1).Range("b1:C10")
  '    .ChartType = xlLine
      .ApplyCustomType ChartType:=xlBuiltIn, TypeName:="Courbe - Histo. 2 axes"
      .HasTitle = True
      .ChartTitle.Text = "essai"
      .SeriesCollection(1).XValues = CHOIX 'Range("A2:A10")
 
   End With
 
   ActiveSheet.ChartObjects(1).Activate
   essai = MsgBox("Voulez vous la série 1 en Graph ligne !", vbYesNo + vbExclamation, "Avertissement")
 
   If essai = vbNo Then
   Exit Sub
   Else
   ActiveChart.SeriesCollection(1).ChartType = xlLineMarkers
   ActiveChart.SeriesCollection(2).ChartType = xlColumnClustered
   End If
 
End Sub
 
Dernière édition:

garth_algar

XLDnaute Junior
Re : VBA : graphique "courbe - histogramme 2 axes"

Merci beaucoup CB60, c'est parfait.
Maintenant il me reste quelques détails de mise en forme à modifier (couleur de la courbe et de l'histogramme, type de la courbe, échelle des axes, titre des axes, ...). Connaîtrais-tu un site qui recense toutes les commandes utiles à la création d'un graphique, pour ne pas avoir à poster ici au moindre petit blocage ?
 

CB60

XLDnaute Barbatruc
Re : VBA : graphique "courbe - histogramme 2 axes"

re
Il te suffit d'utiliser l'enregistreur de macro et d'adapter à ta sauce, sinon il il a " developper.com" ou il me semble avoir vue des tutos sur les macros pour graphique et ensuite plusieurs specialistes aux états Unis, avec Google fais une recherche avec le mot cles Chart
 

Discussions similaires

Statistiques des forums

Discussions
312 166
Messages
2 085 899
Membres
103 025
dernier inscrit
sr86