A voir également:
- Graphique avec VBA
- Changer carte graphique - Guide
- Graphique excel - Guide
- Graphique sparkline - Guide
- Incompatibilité de type vba ✓ - Forum Programmation
- Vba range avec variable ✓ - Forum VB / VBA
1 réponse
Bonjour,
Voici un exemple de fonction pour une mise à jour d'un graphique de façon
dynamique en VBA:
Cdt
Info
Voici un exemple de fonction pour une mise à jour d'un graphique de façon
dynamique en VBA:
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 & vbLf & "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 ''
Cdt
Info
4 mars 2011 à 09:09
4 mars 2011 à 14:20
Dans mon code, le graphique est situé sur une feuille, il a été crée au préalable et est mise à jour avec ce code.
Cdt
Info