Evénement onglet Excel VBA

NLX_hydra Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai crée une macro qui, entre autres, crée un nouvel onglet dans un classeur.
J'aimerais que cette même macro modifie les événements de ce nouvel onglet.

Concrètement, je voudrais que la macro écrive ça dans la nouvelle feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("$c$2")) Is Nothing Then
Nom_onglet
End If
End Sub
Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

With Target
If .Column = 1 Then .Value = Date: Cancel = True
End With
With Target
If .Column = 2 Then .Value = Time: Cancel = True
End With

End Sub


Comment faire ??

Merci
A voir également:

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

d'abord lire cela:

https://silkyroad.developpez.com/VBA/VisualBasicEditor/#LIV-A

Voici le code:

Sub creer_macro()
'http://silkyroad.developpez.com/VBA/VisualBasicEditor/#LIV-A
Dim Code$, NextLine&
Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "mafeuille"
ActiveSheet.Select
  ' Comment ajouter le code.
    Code = "Private Sub Worksheet_Change(ByVal Target As Range)" & vbCrLf
    Code = Code & "If Not Application.Intersect(Target, Range(""C2"")) Is Nothing Then" & vbCrLf
    Code = Code & "Nom_onglet" & vbCrLf
    Code = Code & "End If" & vbCrLf
    Code = Code & "End Sub" & vbCrLf
    Code = Code & "Private Sub WorkSheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" & vbCrLf
    Code = Code & "With Target" & vbCrLf
    Code = Code & "If .Column = 1 Then .Value = Date: Cancel = True" & vbCrLf
    Code = Code & "End With" & vbCrLf
    Code = Code & "With Target" & vbCrLf
    Code = Code & "If .Column = 2 Then .Value = Time: Cancel = True" & vbCrLf
    Code = Code & " End With" & vbCrLf
    Code = Code & "End Sub"
'   Ecriture du code dans le module de la feuille (fs)
With ActiveWorkbook.VBProject.VBComponents("Feuil12").CodeModule 'mettre le code name de la feuille et non pas "mafeuille"
       NextLine = .CountOfLines + 1
      .InsertLines NextLine, Code
End With
End Sub


Voir à gauche dans les feuilles le code name de la feuille qui va être ajoutée.
par exemple si tu as 3 feuilles le code name sera Feuil4
tu corrigera le code en conséquence à la place de Feuil12
0