Rechercher : dans
Par :

[VBA] Graphique

Dernière réponse le 7 sep 2007 à 15:27:30 wsl1912, le 7 sep 2007 à 10:41:17 
 Signaler ce message aux modérateurs

Bonjour

J'ai réussi à faire un graphique, mon code:

Sub creategraph()

     Dim objChart As Chart, objRange As Range, MaSerie As Series

     Set objRange = Worksheets("Valeur").Range(Worksheets("Valeur").Cells(1,2), Worksheets("Valeur").Cells(5,2))
     Set objChart = ThisWorkook.Charts.Add
     objChart.ChartType = xlLine
     objChart.SeriesCollection.Add objRange, xlColumns, True, True
     Set MaSerie = objChart.SeriesCollection.NewSeries
     MaSerie.Values = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
     MaSerie.XValues = "=" & objRange.Columns(1).Adress(True, True, xlR1C1, True)

     objChart.SetSourceData objRange, xlColumns

End Sub


Le seul problème est qu'il me crée une feuille de graphique à chaque fois qu'il exécute ce code or moi j'aimerai qu'il utilise toujours la même en écrasant le précédent graphique

Que dois-je changer dans mon prog

Merci d'avance
Seules les forces obscures peuvent ouvrir et fermer les portes de Silent Hill
Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « [VBA] Graphique » dans :
Mise à jour des pilotes de la carte graphique VoirMise à jour des pilotes graphiques Quelle carte Graphique je possède ? Sous Windows Xp Sous Windows Vista Mise à jour Mise à jour des pilotes graphiques Pour mettre à jour les pilotes de la carte graphique, il vous faut connaître la...
Comment choisir une carte graphique pour son PC VoirChoisir sa carte graphique PC de bureau/PC portable Une carte graphique est composée essentiellement d'un processeur, le GPU (Graphic Processing Unit), et de mémoire. La carte graphique est à elle seule un petit PC, dédié aux applications...
Changer de carte graphique VoirLa méthode décrite ci-dessous est valable pour une carte au format AGP ou PCIexpress, ainsi que sous les OS Windows XP et Vista. Le marché des processeurs graphiques (GPU) est dominés par deux constructeurs: Nvidia et ATI. Ceux-ci vendent leur...
Télécharger Pilote Intel Graphics Media Accelerator pour Vista VoirLe pilote Intel Graphics Media Accelerator pour Windows Vista est prévu pour les cartes-mères équipées des puces graphiques suivantes : Intel G965 Express desktop chipset, Intel Q965 Express desktop chipset, Intel Q963 Express desktop...
Télécharger SiS UniVGA2 Graphic Driver VoirLe pilote SiS UniVGA2 Graphic Driver supporte les puces graphiques suivantes : SiS650, SiS651, SiSM650, SiS650GX, SiS740, SiS650GL, SiSM741, SiS741GX, SiS741
Carte graphique VoirLes cartes graphiques accélératrices 2D La carte graphique (en anglais graphic adapter), parfois appelée carte vidéo ou accélérateur graphique, est l'élément de l'ordinateur chargé de convertir les données numériques à afficher en données graphiques...

1

irem, le 7 sep 2007 à 12:13:09
  • +1

Ton objet chart est défini par

Set objChart = ThisWorkbook.Charts.Add
alors qu'il pourrait etre un test d'existence (if thisworkbook.charts.count >0 then...) et

set objchart=thisworkbook.charts(1)

Irem

Répondre à irem

2

 wsl1912, le 7 sep 2007 à 15:27:30

Ok, cela fonctionne mais maintenant j'ai un autre problème voici la partie du code qui crée mes graphiques:

For i = 0 To 5 Step 1
    If i = 0 Then colonnebase = 3
    If i = 1 Then colonnebase = 7
    If i = 2 Then colonnebase = 11
    If i = 3 Then colonnebase = 15
    If i = 4 Then colonnebase = 19
    If i = 5 Then colonnebase = 23
    
    Dim objRange As Range, SMesure As Series, SCible As Series, SLimiteinf As Series, SLimitesup As Series
    
    Set objRange = Worksheets("Table").Range(Worksheets("Table").Cells(3, colonnebase), Worksheets("Table").Cells(l, colonnebase + 3))
    Charts.Add
    ActiveChart.ChartType = xlLine
    ActiveChart.SeriesCollection.Add objRange, xlColumns, True, True
    Set SMesure = ActiveChart.SeriesCollection.NewSeries
    Set SCible = ActiveChart.SeriesCollection.NewSeries
    Set SLimiteinf = ActiveChart.SeriesCollection.NewSeries
    Set SLimitesup = ActiveChart.SeriesCollection.NewSeries
    
    SMesure.Values = "=" & objRange.Columns(colonnebase).Address(True, True, xlR1C1, True)
    SMesure.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
    SMesure.Name = "Mesures"
    SCible.Values = "=" & objRange.Columns(colonnebase + 1).Address(True, True, xlR1C1, True)
    SCible.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
    SCible.Name = "Cible"
    SLimiteinf.Values = "=" & objRange.Columns(colonnebase + 2).Address(True, True, xlR1C1, True)
    SLimiteinf.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
    SLimiteinf.Name = "Limite inférieure"
    SLimitesup.Values = "=" & objRange.Columns(colonnebase + 3).Address(True, True, xlR1C1, True)
    SLimitesup.XValues = "=" & objRange.Columns(2).Address(True, True, xlR1C1, True)
    SLimitesup.Name = "Limite supérieure"
    
    ActiveChart.SetSourceData objRange, xlColumns
    ActiveChart.Name = paramètres(i)
    
Next i


Le graphique est correctement affiché, l'axe des ordonnées aussi mais pas l'axe des abscisses. Sachant que:

- La zone des valeurs pour l'abscisse ne contient pas des valeurs chiffré mais des chaînes de caractères
- Cette zone n'est pas forcément contigue avec celle des données

Au lieu des chaînes de caractères, le graphique affiche pour l'axe des abscisses 1,2,....

Où es-je fais une erreur dans le code ?

Merci d'avance Seules les forces obscures peuvent ouvrir et fermer les portes de Silent Hill

Répondre à wsl1912