Bonjour,
Je rencontre un petit problème qui me bloque depuis quelques jours.
Sur une feuille excel intitulée COFFRET, j'ai un tableau de valeurs en bas duquel j'ajoute une ligne de données chaque semaine.
ce tableau contient 3 colonnes:
- colonne H : numéro de la semaine
- colonne I : donnée 1
- colonne J : donnée 2
J'ai un graphique sur la même feuille qui présente les courbes de ces deux données sur les 12 dernières semaines. je désirerais automatiser le glissement des sources de données à chaque fois que j'active la macro, et je ne parviens pas à trouver la syntaxe adéquate.
Je souhaite que ma source de données glisse de sa position initiale
Ligne a
.
.
.
Ligne b
à une position définie par deux variables créées par mes soins
ProchaineLigne12
.
.
.
ProchaineLigne
(si vous vous posez la question pour le offset, entre le moment ou je déclare cette variable et celui ou je ferai glisser le champs de données j'aurais inséré de nouvelles données donc cette ligne ne sera plus vide)
Grâce à l'enregistremen automatique de macros excel, j'ai pu déterminer que mon tableau est identifié par "Chart 2", et que les séries que je désire changer sont identifées aux index de séries 1 et 3.
Je tente une syntaxe du style
Il m'est retourné le message suivant "Erreur d'exécution '1004'; Erreur définie par l'application ou par l'objet".
Je suppose que le problème réside donc dans la mauvaise manipulation que je fais avec les format des valeurs.
devrais je plutot essayer par la manipulation des données sources directement ?
quel est le lien entre données sources et séries dans le vba ? on peut directement bouger tout le bloc de données sources sans se préoccuper des séries individuellement et excel va tout comprendre tout seul ? de plus, si je ne déplace que mes deux séries une par une (colonne I et J), excel va-t-il mettre à jour les étiquettes de données (ma colonne H) ?
je suis également preneur de toute suggestion utilisant la fonction decaler, que j'ai découverte sur des forums mais que je ne parviens pas à utiliser. je n'arrive pas à définir une plage dynamique de 12 lignes de haut et 1 colonne, car mon tableau ne débute qu'en ligne 254, et il y a des valeurs parasites au dessus. Il me faudrait donc spécifier dans la formule non pas "NBVAL(H:H)" mais "NBVAL(H:H)-x", x le nbre de valeurs parasites. la question est, peut on intégrer une opération au sein même d'une formule? (du style DECALER(H254;NBVAL(H:H)-x; d'ailleurs, décaler peut il retourner une plage de valeurs ? j'avoue que l'usage de cette fonction n'est pas très clair pour moi...
Ah une dernière chose, même si on trouve une solution avec décaler, j'aimerais bien savoir ce que j'aurais du mettre dans mon code vba histoire de ne pas rester sur une frustration (et en plus je m'offre le luxe d'être chiant )
Bon voilà je crois que j'ai à peu près posé toutes mes questions... désolé pour le pavé ! si vous vous sentez de répondre à ne serait ce que quelques unes des questions ci-dessus vous me serez certainement d'une aide providentielle.
Cordialement
Je rencontre un petit problème qui me bloque depuis quelques jours.
Sur une feuille excel intitulée COFFRET, j'ai un tableau de valeurs en bas duquel j'ajoute une ligne de données chaque semaine.
ce tableau contient 3 colonnes:
- colonne H : numéro de la semaine
- colonne I : donnée 1
- colonne J : donnée 2
J'ai un graphique sur la même feuille qui présente les courbes de ces deux données sur les 12 dernières semaines. je désirerais automatiser le glissement des sources de données à chaque fois que j'active la macro, et je ne parviens pas à trouver la syntaxe adéquate.
Je souhaite que ma source de données glisse de sa position initiale
Ligne a
.
.
.
Ligne b
à une position définie par deux variables créées par mes soins
Code:
[I]ProchaineLigne = Sheets("COFFRET").Range("H65536").End(xlUp).Offset(1, 0).Row[/I]
[I]ProchaineLigne12 = ProchaineLigne - 12[/I]
.
.
.
ProchaineLigne
(si vous vous posez la question pour le offset, entre le moment ou je déclare cette variable et celui ou je ferai glisser le champs de données j'aurais inséré de nouvelles données donc cette ligne ne sera plus vide)
Grâce à l'enregistremen automatique de macros excel, j'ai pu déterminer que mon tableau est identifié par "Chart 2", et que les séries que je désire changer sont identifées aux index de séries 1 et 3.
Je tente une syntaxe du style
Code:
[I]Dim ProchaineLigne As Long, ProchaineLigne12 As Long
ProchaineLigne = Sheets("COFFRET").Range("H65536").End(xlUp).Offset(1, 0).Row
ProchaineLigne12 = ProchaineLigne - 12
[COLOR="Blue"]Sheets("COFFRET").ChartObjects("Chart 2").SeriesCollection(1).Values = Sheets("COFFRET").Range("I" & ProchaineLigne12 & ":I " & ProchaineLigne & "")
Sheets("COFFRET").ChartObjects("Chart 2").SeriesCollection(3).Values = Sheets("COFFRET").Range("J" & ProchaineLigne12 & ":J " & ProchaineLigne & "")[/COLOR][/I]
Je suppose que le problème réside donc dans la mauvaise manipulation que je fais avec les format des valeurs.
devrais je plutot essayer par la manipulation des données sources directement ?
Code:
[COLOR="blue"][I]Sheets("COFFRET").ChartObjects("Chart 2").SetSourceData Source:=Sheets("COFFRET").Range("H" & ProchaineLigne12 & ":J " & ProchaineLigne & "")[/I][/COLOR]
je suis également preneur de toute suggestion utilisant la fonction decaler, que j'ai découverte sur des forums mais que je ne parviens pas à utiliser. je n'arrive pas à définir une plage dynamique de 12 lignes de haut et 1 colonne, car mon tableau ne débute qu'en ligne 254, et il y a des valeurs parasites au dessus. Il me faudrait donc spécifier dans la formule non pas "NBVAL(H:H)" mais "NBVAL(H:H)-x", x le nbre de valeurs parasites. la question est, peut on intégrer une opération au sein même d'une formule? (du style DECALER(H254;NBVAL(H:H)-x; d'ailleurs, décaler peut il retourner une plage de valeurs ? j'avoue que l'usage de cette fonction n'est pas très clair pour moi...
Ah une dernière chose, même si on trouve une solution avec décaler, j'aimerais bien savoir ce que j'aurais du mettre dans mon code vba histoire de ne pas rester sur une frustration (et en plus je m'offre le luxe d'être chiant )
Bon voilà je crois que j'ai à peu près posé toutes mes questions... désolé pour le pavé ! si vous vous sentez de répondre à ne serait ce que quelques unes des questions ci-dessus vous me serez certainement d'une aide providentielle.
Cordialement
Dernière édition: