Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment créer un graphique automatiquement à partir d'un tableau

1 réponse
Avatar
JMN
Bonjour à tous,

Je planche depuis une semaine sur une erreur de type 'la méthode 'Range' de
l'objet'_Global' a échoué'.
Voici mon problème : à partir d'un tableau préalablement créé je voudrais
réaliser automatiquement un graphique.
Le nombre de colonnes ne varie pas, mais le nombre de lignes est variable et
mes axes sont définis à partir de ces lignes. Le but est évidemment de
sélectionner les cellules sur un nombre de lignes variables pour créer les
axes du graphique. Ceci est censé être réalisé dans les dernières lignes
ci-dessous, mais elles me donnent toujours le même message d'erreur.
J'ai essayé deux types de sélection pour mes colonnes A et F, mais avec le
même résultat : la méthode 'Range' de l'objet'_Global' a échoué.
Alors où est l'erreur???

Merci d'avance pour votre aide, je rame sévère !



Sub planning()
'
' essai Macro
' Macro enregistrée le 25/10/2005 par JMN
'
Dim datedébut As Date
Dim défaut As Date
Dim celldebsel As Range
Dim cellfinsel As Range


défaut = Date + 7
datedébut = InputBox("Introduire la date de début de chantier prévue
(enter=date du jour + une semaine)", , défaut)
Range("f2").Select
ActiveCell = datedébut
Range("a2").Select

Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop

Do While ActiveCell.Offset(0, 2) <> ""
ActiveCell.EntireRow.Delete
Loop

Set celldebsel = Range("a1")
Set cellfinsel = Range("a1").End(xlDown).End(xlToRight)
Range(celldebsel, cellfinsel).Select


Charts.Add
ActiveChart.SeriesCollection.NewSeries
ActiveChart.ChartType = xlBarStacked
ActiveChart.SetSourceData Source:=Sheets("Détail").Range(celldebsel,
cellfinsel), PlotBy:= _
xlColumns
With acticechart
.SeriesCollection(1).Values = Range("f2" &
Range("f65356")).End(xlDown).Select
.SeriesCollection(1).XValues = Range("A2" &
Range("A65356")).End(xlDown)
.SeriesCollection(2).XValues = Worksheets("Détail").Range("A2",
Range("A2").End(xlDown))
.SeriesCollection(2).Values = Worksheets("Détail").Range("I2",
Range("I2").End(xlDown))

1 réponse

Avatar
Elliac
Bonjour,

Le bout de code suivant réalise un graphique dans la feuille active à partir
de la sélection :
Sub Macro1()
toto = ActiveSheet.Name
Charts.Add
ActiveChart.ChartType = xl3DColumnClustered
ActiveChart.Location Where:=xlLocationAsObject, Name:=toto
End Sub

Camille

"JMN" wrote:

Bonjour à tous,

Je planche depuis une semaine sur une erreur de type 'la méthode 'Range' de
l'objet'_Global' a échoué'.
Voici mon problème : à partir d'un tableau préalablement créé je voudrais
réaliser automatiquement un graphique.
Le nombre de colonnes ne varie pas, mais le nombre de lignes est variable et
mes axes sont définis à partir de ces lignes. Le but est évidemment de
sélectionner les cellules sur un nombre de lignes variables pour créer les
axes du graphique. Ceci est censé être réalisé dans les dernières lignes
ci-dessous, mais elles me donnent toujours le même message d'erreur.
J'ai essayé deux types de sélection pour mes colonnes A et F, mais avec le
même résultat : la méthode 'Range' de l'objet'_Global' a échoué.
Alors où est l'erreur???

Merci d'avance pour votre aide, je rame sévère !



Sub planning()
'
' essai Macro
' Macro enregistrée le 25/10/2005 par JMN
'
Dim datedébut As Date
Dim défaut As Date
Dim celldebsel As Range
Dim cellfinsel As Range


défaut = Date + 7
datedébut = InputBox("Introduire la date de début de chantier prévue
(enterÚte du jour + une semaine)", , défaut)
Range("f2").Select
ActiveCell = datedébut
Range("a2").Select

Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop

Do While ActiveCell.Offset(0, 2) <> ""
ActiveCell.EntireRow.Delete
Loop

Set celldebsel = Range("a1")
Set cellfinsel = Range("a1").End(xlDown).End(xlToRight)
Range(celldebsel, cellfinsel).Select


Charts.Add
ActiveChart.SeriesCollection.NewSeries
ActiveChart.ChartType = xlBarStacked
ActiveChart.SetSourceData Source:=Sheets("Détail").Range(celldebsel,
cellfinsel), PlotBy:= _
xlColumns
With acticechart
.SeriesCollection(1).Values = Range("f2" &
Range("f65356")).End(xlDown).Select
.SeriesCollection(1).XValues = Range("A2" &
Range("A65356")).End(xlDown)
.SeriesCollection(2).XValues = Worksheets("Détail").Range("A2",
Range("A2").End(xlDown))
.SeriesCollection(2).Values = Worksheets("Détail").Range("I2",
Range("I2").End(xlDown))