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 ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
  With ActiveWorkbook.VBProject.VBComponents(ThisWorkbook.Sheets(strSheetName).CodeName).CodeModule
j'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.

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