Graphique VBA

Niouf

XLDnaute Occasionnel
Bonjour à tous !

J'ai besoin d'aide sur une macro qui génère un graphique automatiquement :)

J'ai donc le code suivant :

Sheets("Valeurs Positives").Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlSurface
ActiveChart.SetSourceData Source:=Range("'Valeurs Positives'!$F$1:$J$6")
Constat.Show

Donc ici pas de problème, mon graphique se génère tout seul à partir de la plage de données : ("'Valeurs Positives'!$F$1:$J$6")

Mais le soucis ici c'est que ma plage de données est variable ...
Elle démarre toujours de la case F1 comme vous pouvez le voir, mais ne s'arrète pas toujours en J6

Ma question est donc la suivante :
Est ce que en gros à la place de J6 je peux dire à Excel : "Prends toutes les valeurs remplies du tableau "
Donc déclarer deux variables à la place de J et de 6 qui cherche la dernière colonne remplie et la dèrnière ligne remplie.

J'espere m'etre bien fait comprendre ... :eek:

Merci d'avance à ceux qui m'aideront !
 

Misange

XLDnaute Barbatruc
Re : Graphique VBA

Bonjour

Il te suffit de mettre les données source sous forme de tableau au sens excel du terme
Ce lien n'existe plus
Pas besoin de macro pour que le graphique se mette à jour automatiquement dans ce cas.
Si vraiment tu tiens à une macro quand même utilise alors les noms des colonnes du tableau excel comme source de données.
 

pierrejean

XLDnaute Barbatruc
Re : Graphique VBA

Bonjour Niouf

Salut Misange

A tester:

Code:
Sheets("Valeurs Positives").Select
y = Cells(1, Columns.Count).End(xlToLeft).Column
x = Range("F" & Rows.Count).End(xlUp).Row
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlSurface
ActiveChart.SetSourceData Source:=Range("'Valeurs Positives'!$F$" & x & ":$J$" & y)
Constat.Show
 

Niouf

XLDnaute Occasionnel
Re : Graphique VBA

Bonjour Messieurs,

Merci Misange, effectivement ca fonctionne avec un tableau :)
Puisque le graphique evolue en fonction des valeurs présentes dans le tableau.

Mais c'est vrai que c'est préférable pour moi de lee faire en macro.

J'ai donc essayé ta macro Jean Pierre, mais ca ne fonctionne pas du tout.
J'ai donc essayé de bricoler, mais rien ne fonctionne comme je voudrais...

Je joins un fichier Exemple, tu seras surement plus efficace que moi ...Regarde la pièce jointe TEST.xlsm
 

Pièces jointes

  • TEST.xlsm
    16.1 KB · Affichages: 25
  • TEST.xlsm
    16.1 KB · Affichages: 27

Misange

XLDnaute Barbatruc
Re : Graphique VBA

Re bonjour, salut PierreJean

tu peux tout à faire ET faire un tableau (que j'ai nommé Tblo) ET l'utiliser en VBA de façon très simple :

Code:
Sub Graph()
Range("tblo[#DATA]").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlSurface
    ActiveChart.SetSourceData Source:=Range("tblo[#DATA]")
End Sub

de cette façon, ça reste dynamique et tu peux ajouter ce que tu veux dans ta feuille dans les autres lignes et autres colonnes sans risque de perturber les comptes
 

Niouf

XLDnaute Occasionnel
Re : Graphique VBA

Merci !

Ouais pour ce fichier test c'est impeccable .

Mais dans mon fichier original, il y en dans les cases vides de mon tableau une formule.
Et la macro considère que la case n'est pas vide...

Il n'y a pas moyen de contourner cela ?
 

Misange

XLDnaute Barbatruc
Re : Graphique VBA

Que ce soit par macro par formule ou autre le problème reste le même : il faut mettre des formules dans lequel l'absence de résultat se gère avec
=si (condition;valeur si OK; na() )

Tout l'intérêt d'utiliser un tableau c'est aussi de NE PAS prévoir de lignes vides pour des données non encore obtenues mais à venir. Le tableau se remplit au fur et à mesure que les données sont dispos ce qui évite justement dans 99% des cas ce problème de cellules vides.

Faute de voir un fichier qui représente vraiment le type de données que tu as difficile d'aller plus loin.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus