Sélection de la source (.SetSourceData)

nono1975 - Modifié le 26 juil. 2019 à 08:42
 nono1975 - 26 juil. 2019 à 10:50
Bonjour,

j'ai repris le code qui est excellent sur le lien suivant :

https://fr.wikiversity.org/wiki/Macros-commandes_VBA/Création_de_Graphique

Sub CreerGraphiqueFeuilleDonnees()

    Const sheDonnéesSource  As String = "DataSource"

    Dim chGraph         As Chart
    Dim rPlageAcceuil   As Range
    Dim rPlageSource    As Range
    
    With Sheets(sheDonnéesSource)
        ' Plage devant accueuillir le graphique
        Set rPlageAcceuil = .Range("A10:F20").Offset(0, 1)
        ' Création du graphique, ne pas oublier le .Chart final
        ' L'objet graphique se place sur la plage et à sa taille
        Set chGraph = .ChartObjects.Add(rPlageAcceuil.Left, rPlageAcceuil.Top, rPlageAcceuil.Width, rPlageAcceuil.Height).Chart            
        ' Source du graphique
        Set rPlageSource = .Range("A:E")
    End With
      
    With chGraph
        ' Type barre empilée
        .ChartType = xlBarStacked
        ' Source du graphique
        .SetSourceData Source:=rPlageSource, PlotBy:=xlColumns
        ' Affichage du titre
        .HasTitle = True
        ' Intitulé
        .ChartTitle.Characters.Text = rPlageSource.Cells(1, 1)
        ' Légende en position haute
        .Legend.Position = xlLegendPositionTop     
     End With

    Sheets(sheDonnéesSource).Select
    
End Sub



Comment je fais pour changer de ligne ou de colonne, comme par exemple si je clique clic droit sur le graphique sélectionner la source de données et changer de ligne ou de colonne??


impossible depuis la variable rPlageSource de changer la ligne ou la colonne :'(
.SetSourceData Source:=rPlageSource, PlotBy:=xlColumns


merci pour votre réponse

2 réponses

Personne à une idée, je sèche, ce code est bien car il crée un graph en automatique dans une feuille prédéfini, c'est juste que je n'arrive pas dans cette variable à changer les lignes et les colonnes des données de la source du graphique dans mon cas c'est
Set rPlageSource = .Range("B69:AG69,B77:AG77,B80:AG83")
0
Trouvé, fallait juste changer xlColumns par xlrows ce qui inverse l'axe.

 .SetSourceData Source:=rPlageSource, PlotBy:=xlRows 
0
Rejoignez-nous