Macro pour construction de graphique et boucle for
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:
Pourriez - vous m'éclairer svp?
merci de vos réponses
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
-
Contributeurbonjour,
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)?-
-
Contributeur@Laetitiayaoalors je ferais plutôt:
If Target.Address = S4.Cells(8, 22).Address Then
ou bienIf 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). -
-
Contributeur@Laetitiayaoas-tu essayé mes suggestions?
-
-
-
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 -
Bonjour ci joint mon fichier avec les modifications suggérée
https://www.cjoint.com/c/HHFaEZSXKuB
Merci-
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......!!!!!!!!!!!!!!!!!!!!! -
-
Contributeur@f894009les 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. -
-