Macro création série de graphiques

Shrek007 -  
Kalissi Messages postés 221 Statut Membre -
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

  1. Kalissi Messages postés 221 Statut Membre 20
     
    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
    0