Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Créer un graph à partir de tableaux dynamique

Daetheia

XLDnaute Nouveau
Bonjour,
Je souhaite créer un graph à partir de deux colonnes dont le nombre de ligne est variable.
Pour l'instant je fait mon graph avec des cellules limiter
Code:
ActiveChart.SetSourceData Source:=Sheets("Import de données").Range( _
        "A1:A6,E1:E6"), PlotBy:=xlColumns
j'aimerai changer "A1:A6,E1:E6" par des numéro de cellule variable, en appelant Cells(x, y) par exemple, mais je ne sais pas comment faire, quel fonction utiliser.
Merci d'avance
 

rafspain77

XLDnaute Nouveau
Re : Créer un graph à partir de tableaux dynamique

moi j'ai déjà fait ce genre de chose, mais je ne passait pas par un tableau dynamique:

-je crée un nouvel onglet dans lequel je vais mettre mes valeurs au "propre"
-je crée mon graphique en selectionnant les colonnes dans mon nouvel onglet.
-ensuite j'utilise vba pour trier mes valeurs pour n'avoir que des cellules pleine:

Code:
Private Sub Chart_Activate()

Worksheets("Propre").Range("BA4:BA200").Clear
Dim cel As Range

For Each cel In Worksheets("Données").Range("c6:c156") 'ce sont les données que tu crée
    If cel <> "" Then
        Worksheets("Propre").Range("BA" & cel.Row) = cel.Value 'ce sont justes les données qui apparaitrons sur ton graphique
    End If
Next cel

end sub

Voila ce code que j'ai mis dans mon graph et qui s'actualise dès l'actiavtion de mon graphique.
 

Daetheia

XLDnaute Nouveau
Re : Créer un graph à partir de tableaux dynamique

Merci pour vos réponses.

rafspain77 : Le souci est que je n'aurais pas le nombre de ligne de mon tableau, car il sera variable.

Hasco : Peux-tu détailler un peu ta solution ?
 
G

Guest

Guest
Re : Créer un graph à partir de tableaux dynamique

Re,

Dans le fichier que je t'ai joint plus haut:

Insertion Noms/Définir pour voir la définition des noms dynamiques.

Ensuite clique sur la série du graphique (une barre bleue)
regarde dans la barre de formule comment est faite la formule SERIE.

=SERIE(;h_graphiqueDynamique.xls!Jours;h_graphiqueDynamique.xls!Montants;1)

Par VBA en admettant que le graph soit sur la feuille active:

Code:
    Dim oGraph As Chart
    Set oGraph = ActiveSheet.ChartObjects(1).Chart
    With oGraph.SeriesCollection(1)
        .FormulaLocal = "=SERIE(;" & "'" & ActiveSheet.Name & "'!Jours;" & "'" & ActiveSheet.Name & "'!Montants;1)"
    End With

A+

A+
 

rafspain77

XLDnaute Nouveau
Re : Créer un graph à partir de tableaux dynamique

Dans ma solution, tu peux mettre autant de ligne que tu veux dans ton tableau, par défaut moi je met 200 lignes, mais tu peux en mettre 20 000, ou plus en fonctionde l'ordre de grandeur de tes valeurs.

Bonne continuation.
 

Daetheia

XLDnaute Nouveau
Re : Créer un graph à partir de tableaux dynamique

Ce qu'il me faudrait en fait, c'est au lieu de mettre une selection dans Range(), mettre un tableau.
Donc dans ce code
Code:
ActiveChart.SetSourceData Source:=Sheets("Import de données").Range( _
        "A1:A6,E1:E6"), PlotBy:=xlColumns
remplacer A1:A6 par un premier tableau de donnée, et remplacer E1:E6 par un deuxième.
Est-ce que cela vous semble possible ?
 
G

Guest

Guest
Re : Créer un graph à partir de tableaux dynamique

Bonjour Daetheia,

Je t'invite à aller consulter la charte du forum, pour te donner des chances d'avoir des réponses à tes demandes.

A+
 

Misange

XLDnaute Barbatruc
Re : Créer un graph à partir de tableaux dynamique

Bonjour
Je plussoie avec Hasco, la solution par des séries définies de façon dynamique permet de traiter autant de lignes que tu en ajoutes et elle est beaucoup plus robuste qu'une macro qu'il faut réadapter dès qu'on modifie la feuille...
Ce n'est jamais une bonne stratégie que de définir les données sources d'un graphique en prenant de la marge. Ca consomme de la mémoire pour rien si c'est trop grand, ca ne prend pas en compte toutes les données si c'est trop petit.
un peu de lecture
Ce lien n'existe plus
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…