Graphique - VBA - Plage de donnée variable

Bonjour,

Ma question est assez similaire à celle qui est posé dans ce sujet du forum. Au lieu d'avoir juste la fin de la sélection j'aimerai que le début de ma sélection le soit aussi.

Voici le code (en fait je me suis enregistrer pour cette partie là) que j'aimerai modifier,

ActiveChart.SeriesCollection(1).XValues = "='T2_B3_7,8,9'!$B$&Debut:$C$&Fin"

ActiveChart.SeriesCollection(1).Values = "='T2_B3_7,8,9'!$D$&Debut:$D$&Fin"

"Debut" est le début de ma sélection qui sera variable à chaque fois et même chose pour "Fin".

J'espère que j'ai été assez clair dans mon explication.

Merci d'avance.

Je m'excuse d'avoir créer un nouveau sujet, car vu que l'auteur du sujet (similaire à ma question) a signalé qu'il avait eu réponse à sa question, je craignais que personne ne consulterai le sujet ou j'avais posé ma question. Encore désolé.

Salut et bienvenue sur le Forum,

Tu compliques un peu les choses en postant sur deux fils, car tu risques de recevoir des réponses parallèles.

Et comme j’ai tout d’abord lu ta demande sur le présent fil, je n’y comprenais d’abord rien. Il a fallu que je tombe par hasard sur ton autre demande pour y voir plus clair.

Je ne pense pas que cette autre demande corresponde bien à ton souci et je te propose que tu nous fournisses un bout de fichier avec ta macro enregistrée et tes tableaux variables.

A te relire.

Merci de ta réponse super rapide,

Je m'excuse d'avoir été mal organisé et m'être mal exprimé sur le forum.

Je vais essayer d'être plus précis.

Donc j'ai un fichier avec 1 onglet de donnée de température prise à chaque 5 min depuis 1 mois qui sont rajouté à chaque semaine.

Ce que j'aimerai faire c'est de faire un graphique à chaque semaine. Et pour cela le début et de ma plage de selection changerai à chaque fois car je change de semaine.

Je ne sais pas comment écrire la syntaxe. Donc je mets ici une partie du code de la macro et j'ai posté le fichier excel contenant la macro en piece jointe

ActiveChart.SeriesCollection.NewSeries

ActiveChart.FullSeriesCollection(1).Name = "='T2_B3_7,8,9'!$D$1"

ActiveChart.FullSeriesCollection(1).XValues = "='T2_B3_7,8,9'!$B$2:$C$12382" 'J'aimerai que je puisse spécifier la ligne de début de sélection et la ligne de fin de la selection

ActiveChart.FullSeriesCollection(1).Values = "='T2_B3_7,8,9'!$D$2:$D$12382" 'Pareil ici

En gros, pour une semaine la ligne de début correspond à la ligne 2 et la fin correspond à la ligne 12382 et pour la semaine suivante la ligne de début correspondrait à la ligne 12383 et la fin correspondrait à la ligne 25483.

J'aimerai connaitre la syntaxe qui pourrait faire varier ma plage de selection.

J'ai essayé d'éclaircir ce que je voulais. J'espère que j'ai reussi.

Dites moi si cela n'est pas clair.

51exemple.xlsm (136.71 Ko)

Re,

Pour introduire une variable dans une ligne telle que ci-dessous, il faut juste être très précis et placer les guillemets aux bons endroits.

Ainsi avec les variables ‘Début’ et ‘Fin’, tu peux normalement transformer la ligne

ActiveChart.FullSeriesCollection(1).XValues = "='T2_B3_7,8,9'!$B$2:$C$12382"

en

ActiveChart.FullSeriesCollection(1).XValues = "='T2_B3_7,8,9'!$B$" & Début & ":$C$" & Fin

Lorsque je lance ta macro, le code bloque car apparemment tu as transformé ta feuille et que ça ne fonctionne donc plus. Je n’ai alors pas pu tester mes modifications indiquées ci-dessus.

Si tu ne t’en sors pas, merci de fournir un fichier (même réduit) avec des données qui permettent la création d’un graphique.

Il y a beaucoup d’instructions inutiles dans ton code enregistré (comme dans tous les codes enregistré) et un nettoyage serait peut-être bien.

Je n'ai pas compris non plus comment tu veux renseigner les variables Début et Fin ? D'une manière semi manuelle (par exemple en inscrivant dans une cellule les bonnes valeurs et que la macro aille lire ces valeurs valables pour ce graphique) ? En passant en revue tes lignes par une instruction complémentaire de la macro et que ça créé autant de graphiques que nécessaires ??

A te relire.

Amicalement.

Bonsoir,

Bonsoir Yvouille,

Puis-je intervenir et proposer une alternative sans VBA?

Sans savoir quel type de graphique souhaité par CedricChan?

Amicalement.

Merci Yvouille,

Je vais essayer cela et je te tiens au courant.

Salut encore moi,

Le code ne focntionne pas. J'ai mis un bout de fichier avec la macro graphique.

Serait possible que le nom de l'onglet soit variable aussi?

Merci Jean-Eric, je suis prends toute suggestion.

Merci beaucoup.

45exemple.xlsm (168.40 Ko)

Salut,

Ta macro ne fonctionne pas dans le fichier fourni

Et tu n'as répondu à la plupart de mes questions

Amicalement.

Merci de ta patience et de m'aider,

Je ne comprends pas pourquoi le fichier ne fonctionne pas car j'ai essayer sur mon ordi et le tout marche. Quand j'exécute la macro, cela me produit mon graphique. Il s'agit peut être de compatibilité de version? Je suis sur 2013 et la macro fonctionne. J'ai essayé sur excel 2010 et ca affiche une message d'erreur.

Concernant la variable début et fin, je pensais les spécifier d'une manière semi manuelle comme tu le mentionnais plus haut.

"En passant en revue tes lignes par une instruction complémentaire de la macro et que ça créé autant de graphiques que nécessaires ??" Par contre je ne comprends pas très bien ce que tu veux dire.

Sinon, en lisant le code que tu m'as posté, c'est exactement cela dont j'ai besoin, je ne sais juste pas pourquoi cela ne marche pas.

Crois tu que tu peux faire la même chose avec le nom de l'onglet? Je spécifierai le nom de l'onglet d'une manière semi-manuelle aussi?

Je reposte un fichier. J'espere ne pas desespérer trop vite...

60exemple-2.xlsm (168.75 Ko)

Re,

J'ai vu ton message privé et y ai répondu sans remarquer que tu m'avais aussi écrit sur ton fil La prochaine fois il vaut mieux rester sur le Forum uniquement.

Ton code bloque sur l'instruction .FullSeriesCollection et un message d'erreur indique 'Membre de méthode ou de données introuvable'. Il peut donc s'agir d'un problème de version. Alors pourquoi ne pas créer ton graphique avec la version 2010 qui serait compatible avec les versions supérieures, ou est-ce qu'il n'est pas possible d'obtenir un graphique satisfaisant avec cette ancienne version ?

Une autre possibilité serait que tu me fournisses ton code avant et après modification et que j'essaie de voir comment tu l'as modifié. Mais sans avoir le fichier à disposition, à une version 2010, ça risque d'être compliqué.

A te relire.

Bonjour Yvouille,

J'ignorais que les fils de discussion se suivaient ainsi. Encore désolé mais au moins je le sais maintenant.

Bon j'ai mis le fichier disponible sur le site dont tu m'as parlé, ci dessous le lien pour acceder au fichier.

Le fichier comporte plusieurs onglet. A l'exception des onglets, "légende" et "Donnee", le reste correspondent à des machines.

Je t'explique mes étapes de travail:

  • Je recois des données (cumulatives d'une semaine à une autre) provenant de la machine à chaque semaine.
  • Ensuite je copie-colle les données de la nouvelle semaine dans l'onglet de la machine correspondante.
  • Jusque là j'ai crée une macro "Traitement" qui le fait.

Maintenant ce que j'aimerai ajouter a cette macro "Traitement", est la création de graphique de la nouvelle semaine que je viens de coller dans l'onglet de la machine correspondant. Donc à chaque semaine et pour chaque machine, je dois créer un nouveau graphique. Par le passé je changeais juste ma plage de donnée de graphique et le tour est joué. J'essaie de réaliser une macro qui puisse tout faire car la tache est très répétitive.

Le fichier contient le graphique que j'aimerai avoir et la macro "Graphique" qui a enregistré le tout.

Ce que je trouve bizarre, c'est quand j'exécute la macro "Graphique" c'est qu'elle ne génère pas le graphique qui, pourtant a enregistré toutes mes manipulations. A la place de la version 2013 d'excel, j'ai utilisé la version 2011 de mac (c'est le plus proche que j'ai). Je suis certain que c'est une des sources de mon problème en plus de mes lacunes dans VBA.

J'espère que ca ira cette fois ci.

Merci de ton aide

Re,

Ta macro ne fonctionne pas plus chez moi que chez toi, mais bon, il semblerait que les instructions sont un peu différentes que celles générées avec la version 2013 et – en comparaison avec un bout de macro que j’ai enregistré moi-même – il semblerait que tes instructions nouvelles devraient être lisibles par ma version 2010.

Il y a toutefois un passage que je trouve bizarre dans ton code. A la ligne ActiveChart.SetSourceData Source:=Range("'T2_B3_7,8,9'!$M$2") il me semble que tu devrais avoir une plage entière de cellules mentionnées plutôt que seulement la cellule M2. N’as-tu pas modifié ce code par erreur ?

Eventuellement que tu devrais me fournir un code non-nettoyé de ta macro enregistrée, pour voir si j’arrive à réutiliser ton code brut.

A te relire.

Salut,

J'ai eu la même réaction que toi quand j'ai relu l'enregistrement. Aussi invraisemblable que cela puisse paraitre, c'est le code brut sans aucune modification.

Bon, je vais me rendre à mon école, je crois me rappeler qu'ils ont une version de excel 2010 quelque part dans une des salles informatique. Je me re-enregistre ma macro et je te tiens au courant.

... ou éventuellement me fournir un code non-nettoyé de ta macro enregistrée, pour voir si j’arrive à réutiliser ton code brut

Salut Yvouille,

J'ai finalement réussi avec le code que tu m'avais fourni au départ.

Merci de ton aide et de ta patience!

Rechercher des sujets similaires à "graphique vba plage donnee variable"