Bonjour à tous,
J'ai un pitit problème avec un bout de code que je viens de créer, celui-ci permet de générer du code (le code d'un evenement chart_activate). Mon problème est le suivant :
sur la lignej'ai souvent (mais pas tout le temps) l'erreur "l'indice n'appartient pas à la selection". Le souci viens du fait que "ThisWorkbook.Sheets(strSheetName).CodeName" n'a pas toujours une valeur: si je met une variable dans laquelle je récupère le codeName, parfois celui-ci est égal à "" ... bizarre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part With ActiveWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(strSheetName).CodeName).CodeModule
C'est d'autant plus étrange que lorsque j'ai l'erreur, je ne fais absolument rien, c'est à dire que je ne fais qu'appuyer sur F5 pour que le code se termine, et là tout se déroule correctement.
Avez-vous déjà eu un problème similaire ? avez-vous une solution pour contourner le problème ?
Merci d'avance,
Ci-dessous le code de la procédure incriminée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub AddEventToChart(strSheetName As String) 'ajoute l evenement chart calculate Application.DisplayAlerts = False Application.EnableEvents = False ThisWorkbook.Sheets(strSheetName).Activate ThisWorkbook.Sheets(strSheetName).Select With ActiveWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(strSheetName).CodeName).CodeModule 'Creation de la procedure evenementielle .CreateEventProc "Calculate", "Chart" 'code de la procédure .InsertLines 2, "Dim newChart as Chart" .InsertLines 3, "set newChart = ActiveChart" .InsertLines 4, "newChart.ApplyCustomType ChartType:=xlUserDefined, TypeName:=newChart.Name" End With Application.EnableEvents = True Application.DisplayAlerts = True End Sub
Partager