Création de feuille en vba et accès à son code (numéro variable dans VB Editor)

  • Initiateur de la discussion Initiateur de la discussion alnilam
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alnilam

XLDnaute Nouveau
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?

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
 
Re : Création de feuille en vba et accès à son code (numéro variable dans VB Editor)

Bonjour,

a priori en passant par le codename de la feuille:

Code:
Sub EcrireCode(Feuil1 As String)
 Dim LeCode(1 To 5), NomClasseur As String, Wb As Workbook, WS As String
 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)
 WS = Worksheets(Feuil1).CodeName
 For i = 1 To 5
  Wb.VBProject.VBComponents(WS).CodeModule.InsertLines i, LeCode(i)
 Next
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour