Créer une feuille et y insérer des macro

boubou -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je fais une feuille excel pour des soumissions et au final je crée un onglet pour un client.

Worksheets.Add().Name = Client

Ca va très bien.

Ensuite, je formate la feuille du client à ma guise en y ajoutant des bouton auquel je rattache des macro, mais ou je bloque c'est que j'aimerais utiliser la fonction selectionchange de ma nouvelle feuille.

Disons y mettre le code suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim ligne As Integer

ligne = Selection.Row

If ligne > 2 Then
Range("C1").Value = Range("A" & ligne).Value
End If
End Sub

Le problème c'est que la feuille du client n'existe pas encore, je la créé via le code VBA.
Donc, comment insérer du code relié à un évènement sur une feuille qui n'existe pas encore ?

Comment faire pour peupler les évènement d'une feuille qu'on vient de créer via le code ?

Merci d'avance.

Boubou

3 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Remplace "Feuil5" par
    Worksheets("Ma Feuille").CodeName
    1
  2. boubou
     
    Excellent. Mon nouveau code

    With ActiveWorkbook.VBProject.VBComponents("Feuil5").CodeModule
    'Chr(38) permet d'insérer le symbole & dans la procédure au besoin.
    X = .CountOfLines
    .InsertLines X + 1, "Private Sub Worksheet_SelectionChange(ByVal Target As Range)"
    .InsertLines X + 2, "Ligne = selection.Row"
    .InsertLines X + 3, "If ligne > 2 then"
    .InsertLines X + 4, " Range(""C1"").value = Range(""A"" & Ligne).value"
    .InsertLines X + 5, "Else"
    .InsertLines X + 6, " Range(""C1"").value = """""
    .InsertLines X + 7, "End if"
    .InsertLines X + 8, "End Sub"
    End With

    Ma nouvelle question.
    Je ne suis pas très à l'aise avec VBComponents.
    Si au lieu de "Feuil5" quel serait la façon d'assigner une feuille par le nom de son d'onglet ?
    Les feuilles sont créé dynamiquement, au moment de créer la macro, je sais le nom de l'onglet, mais j'ignore à quel # de feuille je suis rendu.
    0