Macro pour construction de graphique et boucle for

Laetitiayao Messages postés 54 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
J'exécute une macro qui ne marche pas depuis ce matin et j'ai vraiment besoin d'aide.voici de facon simplifiée ce que je souhaite faire.
faire une représentation des séries présentes sur ma feuille "calcul" (colonne en jaune) en fonction de la date( colonne en gris) dans le graphique inséré dans ma feuille "ETF1", de sorte qu'a chaque fois que ma macro effectue un choix dans ma liste déroulante en V8 le graphique se met à jour automatiquement.
J'ai écris le code suivant mais il ne se pase rien:

Sub update6()
Dim S3 As Worksheet
Dim S4 As Worksheet
Dim i, j, j1, j2, k As Long

Set S3 = Sheets("Calcul")
Set S4 = Sheets("ETF 1")

For j = 1039To 1338 Step 6
    S4.Cells(8, 22) = S3.Cells(2, j)
   
    ActiveChart.ChartType = xlLine
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Values = S3.Range(S3.Cells(7, j), S3.Cells(S3.Cells(3, 1039), j))
   ActiveChart.SeriesCollection(1).XValues =S3.Range(S3.Cells(7,1038), S3.Cells(S3.Cells(3, 1038), j))
Next j
End Sub


Private Sub worksheet_change(ByVal Target As Range)
Dim S3, S4 As Worksheet
Set S3 = Sheets("calcul")
Set S4 = Sheets("ETF 1")

    If Target.Address = S4.Cells(8, 22) Then
       
        Call update6
    End If
End Sub


Pourriez - vous m'éclairer svp?
merci de vos réponses

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    as-tu bien merci "option explicit" en début de chaque module?
    qu'essaies-tu de faire en comparant Target.Address à S4.Cells(8, 22)?
    0
    1. Laetitiayao Messages postés 54 Statut Membre
       
      bonjour,
      oui oui, target address est la cellule qui comprend ma liste déroulante dans laquelle ma macro doit faire des choix les uns apres les autres . je veux juste dire que c'est dans cette cellule que les changements doivent s'effectuer je ne sais pas si je fais bien?
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Laetitiayao Messages postés 54 Statut Membre
         
        alors je ferais plutôt:
        If Target.Address = S4.Cells(8, 22).Address Then

        ou bien
        If Target.Address = "$V$8" Then

        ainsi, update6 sera appelé chaque fois que Cells(8, 22) change (si tu as mis la fonction dans la feuille ETF 1).
        0
    2. Laetitiayao Messages postés 54 Statut Membre
       
      Oui, je l'ai mis dans la feuille ETF1, ce ce qui correspond à mon deuxieme code
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Laetitiayao Messages postés 54 Statut Membre
         
        as-tu essayé mes suggestions?
        0
    3. Laetitiayao Messages postés 54 Statut Membre
       
      Oui, la liste déroutante cellule v8 se modifie au fur et à mesure mais aucun evenement dans le graphique
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

    Peux tu envoyer un bout de ton fichier sur cjoint.com et joindre le lien obtenu à ton prochain message. N'oublies pas d'y ajouter des explications et des exemples de résultat attendu
    1) Tu vas dans https://www.cjoint.com/
    2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
    3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
    4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
    en bleu souligné ; tu le sélectionnes et tu fais "Copier"
    5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse tu fais "Coller".

    Cdlmnt
    0
    1. Laetitiayao Messages postés 54 Statut Membre
       
      Bonjour, je vous le ferai parvenir en rentrant, au bureau j'ai un acces limité a certain sites internet notament cijoint.com, peu etre je peux l'envoyer par msg privé? ou existe t- il un autre moyen de partage?
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      tu as aussi
      mon-partage.fr
      0
  3. Laetitiayao Messages postés 54 Statut Membre
     
    Bonjour ci joint mon fichier avec les modifications suggérée
    https://www.cjoint.com/c/HHFaEZSXKuB

    Merci
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Vous avez des appels récursifs sur votre module update6 (vois pas pourquoi pour le moment) , en ajoutant application.enableevents false avant l'appel et true apres, j'ai une erreur cette ligne
       ActiveChart.SeriesCollection(1).Values = S3.Range(S3.Cells(7, j), S3.Cells(S3.Cells(3, 1038), j))

      Je ne comprends pas le ,j a la fin......!!!!!!!!!!!!!!!!!!!!!
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention  
         
        les appels récursifs sont sans doute causés par le fait que le code appelé par worksheet_change modifie le contenu de la feuille, ce qui appelle à nouveau worksheet_change.
        Ce qui correspond à la phrase "a chaque fois que ma macro effectue un choix dans ma liste déroulante en V8 le graphique se met à jour automatiquement". j'ai l'intuition que il n'y a pas de raison d'utiliser worksheet_change pour cet exercice.
        0
    2. Laetitiayao Messages postés 54 Statut Membre
       
      Bonjour,
      en fait j correspond aux colonnes representant comprennant les series que je veux representer , ce qui lme permet de changer de colonne a chaque evenement dans ma liste deroulante
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Salut yg_be, en effet c'est ce que vous avez ecrit pour les appels recursifs

      Laetitiayao:
      Pourquoi une boucle sur un seul graphe????
      Le j serait pour incrementer les colonnes donc prendre j comme colonne pas 1038.....
      0