VBA graphe automatique

[Résolu]
Signaler
Messages postés
5
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
je suis en train de faire une macro pouvant faire automatiquement un
graphe selon ce que l'utilisateur a choisi dans les combobox.

la première combobox selectionne les lignes et la deuxième les colonnes = cela fonctionne

mais après pour le code du graphe ça beug à la ligne 4 !!!
si vous pouvez m'aider !!! svp !!!

Sub graphe(ByVal cellule1X As String, ByVal segment As String,
ByVal cellule2X As String, ByVal cellule1Y As String, ByVal cellule2Y
As String, ByVal cellulenom As String)

1. Charts.Add

2. ActiveChart.ChartType = xlXYScatter

3. ActiveChart.SeriesCollection.NewSeries

4. ActiveChart.SeriesCollection(1<wbr>).XValues = "='synthèse masse'!" & cellule1X & ":" & cellule2X

ActiveChart.SeriesCollection(1<wbr>).Values = "='synthèse masse'!" & cellule1Y & ":" & cellule2Y

ActiveChart.SeriesCollection(1<wbr>).Name = "='synthèse masse'!" & cellulenom

ActiveChart.Location Where:=xlLocationAsNewSheet, Name:= _

cellulenom & "du segment" & segment

With ActiveChart

.HasTitle = True

.ChartTitle.Characters.Text = "Pédalier du segment I"

.Axes(xlCategory, xlPrimary).HasTitle = True

.Axes(xlCategory, xlPrimary).AxisTitle.Characters<wbr>.Text = "Véhicule"

.Axes(xlValue, xlPrimary).HasTitle = True

.Axes(xlValue, xlPrimary).AxisTitle.Characters<wbr>.Text = "masse en kg"

End With

ActiveChart.HasLegend = False

End Sub</wbr></wbr></wbr></wbr></wbr>

2 réponses

Messages postés
5
Date d'inscription
mardi 17 juin 2008
Statut
Membre
Dernière intervention
25 juin 2008

j'ai modifié un peu mon code mais maintenant j'ai une autre erreur : la méthode 'cells' de l'objet '_global' a échoué

Sub graphe(ByVal debut As Double, ByVal fin As Double, ByVal colonne As Double, ByVal nom As String, ByVal segment As String)

Dim PlageP As Range, plageX As Range

    Charts.Add
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SeriesCollection.NewSeries
    Set plageX = ActiveSheet.Range(Cells(debut, 3), Cells(fin, 3))
    Set PlageP = ActiveSheet.Range(Cells(debut, colonne), Cells(fin, colonne))
    ActiveSheet.ChartObjects(nom).Activate
   
    ActiveChart.SeriesCollection(1).XValues = plageX
    ActiveChart.SeriesCollection(1).Values = PlageP
    ActiveChart.SeriesCollection(1).Name = "='synthèse masse'!" & nom
    ActiveChart.Location Where:=xlLocationAsNewSheet, Name:= _
       nom & "du segment" & segment
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "Pédalier du segment I"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Véhicule"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "masse en kg"
    End With
    ActiveChart.HasLegend = False
End Sub
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

essais de remplacer :

Set plageX = ActiveSheet.Range(Cells(debut, 3), Cells(fin, 3))
Set PlageP = ActiveSheet.Range(Cells(debut, colonne), Cells(fin, colonne))

par :
With ActiveSheet
Set plageX = .Range(.Cells(debut, 3), .Cells(fin, 3))
Set PlageP = .Range(.Cells(debut, colonne), .Cells(fin, colonne))
End with

Fait gaffe aux points ils sont OBLIGATOIRE ! Ils servent a associer les fonctions range et cells a activesheet via le with

A+