Macro création série de graphiques [Fermé]

Signaler
-
Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
-
Bonjour à tous,

J'ai un tableau avec 5 colonnes : Date | Semaine | Université| Spécialité| Nbre d'étudiants
Je dois créer des une bonne centaine de graphique pour chaque combinaison du couple (université; spécialité). Le tableau fait 50 000 lignes...

J'aimerai faire une macro pour générer les graphiques automatiquement....

Est-ce que quelqu'un a une idée ?

Merci d'avance ;)

1 réponse

Messages postés
218
Date d'inscription
jeudi 2 mai 2013
Statut
Membre
Dernière intervention
15 juillet 2019
19
Bonjour,

Il eu été plus simple de présenter une partie de code ...

Voici un exemple de partie de code :


Const cte_Position1 = 60

Dim intMaximum As Integer, Longueur As Integer
Dim datHeure As Variant, strReponse As String
Dim Dummy As Variant, Position As Long
Dim Plage As Range, lngBoucle As Long

Function PremierGraphique()

Dim rngCible As Range, strChaine As String, Compteur As Long

Sheets(strNomFleGraph).Select
ActiveSheet.ChartObjects("Graphique 6").Activate
ActiveChart.ChartTitle.Select
Selection.Characters.Text = "Incidents " & strNomClient & Chr(10) & "Année : " & LAnnee

ActiveChart.ChartArea.Select

' Nom de la collection 1
Set rngCible = Sheets(strNomFleMaitre).Range("B5")
ActiveChart.SeriesCollection(1).Name = rngCible

' Valeur de la collection 1
strChaine = "C" & BlocSection(0).AdrTot & ":N" & BlocSection(0).AdrTot
Set rngCible = Sheets(strNomFleMaitre).Range(strChaine)
ActiveChart.SeriesCollection(1).Values = rngCible

' Abscisse de la collection 1
Set rngCible = Sheets(strNomFleMaitre).Range("C1:N1")
ActiveChart.SeriesCollection(1).XValues = rngCible

' Nom de la collection 2
strChaine = "B" & (BlocSection(0).AdrFin + 1)
Set rngCible = Sheets(strNomFleMaitre).Range(strChaine)
ActiveChart.SeriesCollection(2).Name = rngCible

' Valeur de la collection 2
strChaine = "C" & (BlocSection(0).AdrFin + 1) & ":N" & (BlocSection(0).AdrFin + 1)
Set rngCible = Sheets(strNomFleMaitre).Range(strChaine)
ActiveChart.SeriesCollection(2).Values = rngCible

' Abscisse de la collection 2
Set rngCible = Sheets(strNomFleMaitre).Range("C1:N1")
ActiveChart.SeriesCollection(2).XValues = rngCible

intMaximum = Application.WorksheetFunction.Max(Sheets(strNomFleMaitre).Range("C5:N5"))
ActiveChart.Axes(xlValue).Select
If (intMaximum > 5) Then
Dummy = Round((intMaximum / 10) + 0.5)
intMaximum = CInt(Val(Dummy * 10) + 10)
With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = intMaximum
.MajorUnit = Round((intMaximum / 4) + 0.5)
.MinorUnit = Round((intMaximum / 4) + 0.5)
End With
Else
With ActiveChart.Axes(xlValue)
.MaximumScale = 5
.MajorUnit = 1
.MinorUnit = 1
End With
End If

Range("A1").Select

End Function


Moi je n'avais qu'une vingtaine de graphique, alors j'ai fait une macro pour chacun. Mais pour 500, il serait souhaitable de créer une structure qui contiendrait les paramètres de chacun des graphique.

Néanmoins, ce code est un début de piste.
Ces graphiques ayant des axes (x,y) recalculés en fonction des données.

K