Macro pour graphique

Bonjour,

J'ai plusieurs feuilles de tableaux (comme l'exemple joints).

Je cherche à faire une macro qui ajouterai (sur un graphique vide comprenant simplement les dates sur l'axe des X) une des colonnes paramêtres de mon tableau.

Exemple : ajoutammonium() ajouterai toutes les valeurs d'ammonium sur mon graphique (de preférence avec une courbe) en fonction des dates.

Les macros bien sur pourrait se cumuler pour montrer par exemple la courbe d'ammonium et celle de pH.

Autre soucis je n'ai pas le même nombre de date sur toutes mes feuilles et à cause de l'erreur 1004 je ne peux pas simplement mettre le nom de la colonne avec la fonction : ActiveChart.SeriesCollection.NewSeries .

Voilà ou j'en suis :

Sub grphvide()

    ActiveSheet.Shapes.AddChart2(240, xlXYScatterLines).Select
    ActiveChart.SetSourceData Source:=Range("feuill1!$A:$A,feuill1!$K:$K")
    ActiveChart.FullSeriesCollection(1).Delete
End Sub

J'ai crée un graph vide en créant un au hasard et en supprimant les données le concernant

Sub ajoutammonium()
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.FullSeriesCollection(1).Name = Cells(1, 4)
    ActiveChart.FullSeriesCollection(1).Values = "=feuill1!$D$2:$D$67"
End Sub

J'ai réussi a ajouter les données que je veux mais je cherche à enlever feuill1 pour que ce soit utilisable sur n'importe quelle feuille et le 67 car je n'ai pas toujours 67 dates

Désolé si je suis complètement incompréhensible je suis novice et débute sur le forum autant que sur le codage :/

Cordialement,

CJ

3exemple.xlsx (14.83 Ko)

Salut,

Tu pourrais plus simplement utiliser un graphique croisé dynamique,

Tu n'auras alors qu'à glisser tes étiquettes pour créer les courbes,

Voici un exemple,

@+

Bonjour et merci pour la réponse,

Sauf que cette macro doit faire parti d'un ensemble plus large de requetes, il faut donc que j'automatise au maximum cette création

Avez vous une solution pour que l'utilisateur de la macro n'est rien à faire à part l'activer.

Cordialement,

Clément

Je te propose :

Sub grphvide()
    Dim oShape As Excel.Shape
    Dim oChart As Excel.Chart
    Dim oRange As Excel.Range
    Dim oSheet As Excel.Worksheet

    Set oSheet = ThisWorkbook.Worksheets(1)
    Set oRange = oSheet.UsedRange
    Set oShape = oSheet.Shapes.AddChart2(240, xlXYScatterLines, 800, 50, 500, 250)
    Set oChart = oShape.Chart
    oShape.Name = "CHART1"
End Sub
Sub ajoutammonium()
    Dim oShape As Excel.Shape
    Dim oChart As Excel.Chart
    Dim oRange As Excel.Range
    Dim oSheet As Excel.Worksheet

    Set oSheet = ThisWorkbook.Worksheets(1)
    Set oShape = oSheet.Shapes("CHART1")
    Set oChart = oShape.Chart
    Set oRange = oSheet.UsedRange.Columns(4)

    oChart.ChartTitle.Text = oSheet.Cells(1, 4).Value
    oChart.SeriesCollection.NewSeries
    oChart.FullSeriesCollection(1).Name = oSheet.Cells(1, 4).Value
    oChart.FullSeriesCollection(1).Values = "=" & oSheet.Name & "!" & oRange.Address
End Sub

Bonjour,

Une proposition à étudier.

Tableau, Power Query (natif avec Excel 2016), TCD et un soupçon de VBA pour les segments.

Pour actualiser la requête, Ruban, Données, Connexions et Actualiser tout...

Cdlt.

Bonjour,

Voir ces deux réponses en revenant de week-end m'a fait chaud au coeur ! ^^'

J'ai utilisé le code de GVIALLES car il m'a permis plus facilement de pouvoir ajouter les courbes les unes sur les autres, il me reste par contre le soucis des dates que je n'arrive pas à résoudre, l'axe des abscisses ne montre pas les dates mais simplement les numéros de lignes...

J'ai ajouter ça pour essayer mais rien ne diffère sur le graphique

Sub grphvide()
    Dim oShape As Excel.Shape
    Dim oChart As Excel.Chart
    Dim oRange As Excel.Range
    Dim oSheet As Excel.Worksheet

    Set oSheet = ThisWorkbook.Worksheets(1)
    Set oRange = oSheet.UsedRange
    Set oShape = oSheet.Shapes.AddChart2(240, xlXYScatterLines, 800, 50, 500, 250)
    Set oChart = oShape.Chart
    oShape.Name = "CHART1"
End Sub
Sub ajoutammonium()
    Dim oShape As Excel.Shape
    Dim oChart As Excel.Chart
    Dim oRange As Excel.Range
    Dim oDate As Excel.Range
    Dim oSheet As Excel.Worksheet

    Set oSheet = ThisWorkbook.Worksheets(1)
    Set oShape = oSheet.Shapes("CHART1")
    Set oChart = oShape.Chart
    Set oRange = oSheet.UsedRange.Columns(4)
    Set oDate = oSheet.UsedRange.Columns(1)

    oChart.ChartTitle.Text = oSheet.Cells(1, 4).Value
    oChart.SeriesCollection.NewSeries
    oChart.FullSeriesCollection(1).Name = oSheet.Cells(1, 4).Value
    oChart.FullSeriesCollection(1).Values = "=" & oSheet.Name & "!" & oRange.Address
    oChart.FullSeriesCollection(1).XValues = oDate

End Sub

Merci infiniment pour vos réponses

Bonjour,

Je persiste avec un nouvel exemple, simple à mettre en oeuvre.

Cdlt.

Bonjour,

Effectivement votre methode est plus simple et plus intuitive, cependant cette représentation graphique faisant partie d'un plus grand ensemble de choix et de bouton je prefere la methode avec du code que je peux modifié plus rapidement, quelle partie du code de votre TBD indique l'axe des abscisses ?

Cordialement

CJ

Re,

Il n'y a pas réellement de code.

Sinon, c'est le TCD et et le type du graphique retenu qui permet l'affichage des années et des mois en abscisse..

Cdlt.

Merci quand même =) je vais fermer ce sujet qui a été résolu (YOUPI !) et continuer de chercher de mon coté sur la manière de résoudre mon problème

Rechercher des sujets similaires à "macro graphique"