Recopie de macro automatisée

thomlau

XLDnaute Occasionnel
Bonsoir le Forum.

Dans le projet sur lequel je travaille actuelement, par macro "xxx" feuilles sont créées selon un critère.

Je voudrais, si celà est possible, que pour chaque feuille créée, ce code soit adapté ou collé
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim navig

If Not Application.Intersect(Target, Range("C30")) Is Nothing Then

    Sheets("Feuil1").Range("AA1").Value = Range("C30").Value
    navig = Sheets("Feuil1").Range("AA1").Value
    Worksheets(navig).Select

End If

End Sub
Merci pour votre aide
 
G

Guest

Guest
Re : Recopie de macro automatisée

bonsoir Thomlau,


Avec ceci:

Cette macro a besoin

1-de la référence à: Microsoft Visual Basic For Applications Extensibility 5.n

2-dans les options de sécurité des macro cocher la case 'faire confiance au projet Visual Basic'


Code:
Sub AjouterCodeEvChange()
    Dim L1 As Long
    Dim Code As String
    Code = "Dim navig" & vbCrLf
    Code = Code & "If Not Application.Intersect(Target, Range(""C30"")) Is Nothing Then" & vbCrLf
    Code = Code & "   Sheets(""Feuil1"").Range(""AA1"").Value = Range(""C30"").Value" & vbCrLf
    Code = Code & "   navig = Sheets(""Feuil1"").Range(""AA1"").Value" & vbCrLf
    Code = Code & "   Worksheets(navig).Select" & vbCrLf
    Code = Code & "End If"
    With ActiveWorkbook.VBProject.VBComponents([SIZE=3][COLOR=red]NomFeuille[/COLOR][/SIZE]).CodeModule
        'n° ligne du début de la proc
        L1 = .CreateEventProc("Change", "WorkSheet")
        'insérer le texte du code
        .InsertLines L1 + 1, Code
    End With
    Code = ""
End Sub

Où NomFeuille est le nom d'une feuille dans laquelle ajouter le code.

Plus simple:
Sheets("Feuil1").Copy before:=Sheets(1)
Copie Feuil1 en début de classeur avec le code si elle en a un



A bientôt
 
Dernière modification par un modérateur:

thomlau

XLDnaute Occasionnel
Re : Recopie de macro automatisée

Bonjour Hasco, le forum...

Bon....je n'arrive pas à adapter ce code. Je te remercie tout de même pour ton aide précieuse.

Serait-il possible au lieu de recopier ce code sur chaque feuille créée, de le mettre dans un module de classe?
Donc, ça ferait ça :

Sur chaque feuille qui portent un nom présent dans la liste appelée "NOMS" :

macro

.....

Est-ce faisable? D'avance merci.
 

Dull

XLDnaute Barbatruc
Re : Recopie de macro automatisée

Salut thomlau, Gérard, le Forum

Réessaye le Code de l'ami Hasco :) en changeant une petite chose

Code:
Sub AjouterCodeEvChange()
    Dim L1 As Long
    Dim Code As String
    Code = "Dim navig" & vbCrLf
    Code = Code & "If Not Application.Intersect(Target, Range(""C30"")) Is Nothing Then" & vbCrLf
    Code = Code & "   Sheets(""Feuil1"").Range(""AA1"").Value = Range(""C30"").Value" & vbCrLf
    Code = Code & "   navig = Sheets(""Feuil1"").Range(""AA1"").Value" & vbCrLf
    Code = Code & "   Worksheets(navig).Select" & vbCrLf
    Code = Code & "End If"
    With ActiveWorkbook.VBProject.VBComponents([COLOR=Red]NomFeuille[B].CodeName[/B][/COLOR]).CodeModule
        'n° ligne du début de la proc
        L1 = .CreateEventProc("Change", "WorkSheet")
        'insérer le texte du code
        .InsertLines L1 + 1, Code
    End With
    Code = ""
End Sub
A tester
Bonne Journée
 

thomlau

XLDnaute Occasionnel
Re : Recopie de macro automatisée

Bonjour tout le monde.

Dull, avec ton code, je n'ai plus qu'un "Objet requis", "NomFeuille" n'est pas défini et provoque une erreur.
NomFeuille est chaque nom présent sur Feuil1 de A1 à A100.

Encore merci à vous tous
 

Discussions similaires

Réponses
3
Affichages
196

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400