Problème VBA générant du code VBA "l'indice n'appartient pas à la selection"
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:
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:
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 |