Bonjour,
J'ai créé une ComboBox sur une feuille, et j'aimerais lui associer une procédure si sa valeur change. J'ai trouvé ce qu'il me fallait en cherchant sur différents forums (voir code ci-dessous) et ça fonctionne.
Mon problème vient de l'argument de la procédure. Le code ne marche pas si je mets Call.EcrireCode("Nom de la feuille"), ça marche seulement si je mets Call.EcrireCode("Feuil2") si Feuil2 (Nom de la feuille) est la feuille correspondante dans l'arborescence du VBAProject.
Comme ces feuilles sont des formulaires d'impression qui sont créés à partir d'autres feuilles de calcul et supprimés à la réinitialisation du fichier, suivant l'ordre dans lequel ils sont créés, le numéro de la feuille va varier et je ne peux donc plus y accéder.
Existe-t-il une syntaxe pour accéder au code d'une feuille en utilisant son nom, ou éventuellement pour fixer le numéro de la feuille créée dans VBComponents?
Merci d'avance
alnilam
J'ai créé une ComboBox sur une feuille, et j'aimerais lui associer une procédure si sa valeur change. J'ai trouvé ce qu'il me fallait en cherchant sur différents forums (voir code ci-dessous) et ça fonctionne.
Mon problème vient de l'argument de la procédure. Le code ne marche pas si je mets Call.EcrireCode("Nom de la feuille"), ça marche seulement si je mets Call.EcrireCode("Feuil2") si Feuil2 (Nom de la feuille) est la feuille correspondante dans l'arborescence du VBAProject.
Comme ces feuilles sont des formulaires d'impression qui sont créés à partir d'autres feuilles de calcul et supprimés à la réinitialisation du fichier, suivant l'ordre dans lequel ils sont créés, le numéro de la feuille va varier et je ne peux donc plus y accéder.
Existe-t-il une syntaxe pour accéder au code d'une feuille en utilisant son nom, ou éventuellement pour fixer le numéro de la feuille créée dans VBComponents?
Code:
Sub EcrireCode(Feuil As String)
Dim LeCode(1 To 5)
Dim NomClasseur As String
Dim Wb As Workbook
NomClasseur = ActiveWorkbook.Name
LeCode(1) = "Private Sub ComboBox1_Change()"
LeCode(2) = "Dim Choix As String"
LeCode(3) = "Choix = Me.ComboBox1.Value"
LeCode(4) = "Call Module1.Liste_deroulante(Choix)"
LeCode(5) = "End Sub"
Set Wb = Workbooks(NomClasseur)
For i = 1 To 5
Wb.VBProject.VBComponents(Feuil).CodeModule.InsertLines i, LeCode(i)
Next
End Sub
Merci d'avance
alnilam