Histogramme depuis un tableau + vba

zaza

XLDnaute Nouveau
bonjour!!!!

je souhaite creer un vrai graphique sur une page exel dont les donnéee en abscisse et en ordonnées sont donnés dans 2 tableaux differents. hors je ne sais pas comment lui dire car tous ce que j ai trouvé c est la creation d un graph à partir de plage de données


ActiveChart.SetSourceData Source:=Sheets('feuil1').Range('A1:A10' & nb), PlotBy:=xlColumns

ActiveChart.seriesCollection(1).XValues = '='feuil1'!R2C1:R' & nb & 'C1'

il n y aurait pas la meme chose pour dire va me chercher en abscisse les données de ce tableau et idem pour les ordonnées

sinon savez vous comment on met dans une variable de type plage les données d'un tableau

Merci!



 
A

Alain CROS

Guest
Bonjour.

Code:
Sub Trace()
    Dim SC As Series, Tabl1, Tabl2
    Tabl1 = Array(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
    Tabl2 = Array(3, 6, 9, 12, 15, 18, 21, 24, 27, 30)
    Set SC = ActiveSheet.ChartObjects.Add(0, 0, 200, _
        100).Chart.SeriesCollection.NewSeries
    With SC
        .Values = Tabl2
        .XValues = Tabl1
    End With
End Sub

Alain CROS
 

zaza

XLDnaute Nouveau
Je te remercie pour ton aide, ca marche!

Est ce que tu as une idee de comment faire pour que mon graph se mette à jour automatiquement dès que je modifie une valeur source, sachant que je prend les données dans une plage excel, j fais des calculs que je stock dans mon tableau et ensuite comme tu l'as sans doute compris ;) , je crée mon graph d apres ce tableau!

Je te remercie!

:)

Public Sub histogramme(Plage As Range)

Dim TabPlage() As Double
Dim nbtotal As Integer
Dim max As Double
Dim min As Double
Dim etendu As Double
Dim PlageClasse, BorneTemp As Double
Dim nbclasse As Integer
Dim Bornes() As Double
Dim VarFrequence As Variant
Dim mycellule As Range
Dim SC As series


If Option_ClasseAuto.Value = True Then

With Application.WorksheetFunction

nbtotal = .Count(Plage)
max = .max(Plage)
min = .min(Plage)
End With

etendu = max - min
nbclasse = 1 + 10 / 3 * Log10(nbtotal)
PlageClasse = etendu / nbclasse

ReDim TabPlage(nbtotal - 1)
i = 0
For Each mycellule In Plage
TabPlage(i) = mycellule
i = i + 1
Next

ReDim Bornes(nbclasse)
BorneTemp = min

i = 0
Bornes(i) = BorneTemp

For i = 1 To (nbclasse)
Bornes(i) = BorneTemp + PlageClasse
BorneTemp = Bornes(i)
Next i
VarFrequence = Application.WorksheetFunction.Frequency(TabPlage, Bornes)


' test
MsgBox ('Test 0=' & Bornes(0))

Set SC = ActiveSheet.ChartObjects.Add(0, 0, 300, _
300).Chart.seriesCollection.NewSeries
With SC
.Values = VarFrequence
.XValues = Bornes
.HasDataLabels = True
.HasLeaderLines = True
End With

Worksheets(1).ChartObjects(1).Activate

With ActiveChart
.ChartType = xlColumnClustered
.HasTitle = True
.ChartTitle.Text = 'Histogramme'
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = 'Bornes'
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = 'Effectifs'

End With
MsgBox ('juste apres')
End If

End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 496
Messages
2 088 982
Membres
103 997
dernier inscrit
SET2A