Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment Copier la macro Workbook_Open sur un Nouveau classeur créé avec VBA ?

5 réponses
Avatar
Philou
Bonjour,

Je cherche à copier grace à VBA les macro contenues dans ThisWorkBook d'un
classeur sur le ThisWorkBook d'un autre classeur.
Les macros du genre Workbook_Open.....Workbook_SheetActivate.
Quelqu'un aurait-il une idée pour effectuer cette opération simplement car
je ne suis pas un pro de la programmation.
Merci !

5 réponses

Avatar
michdenis
Bonsoir Philou,

Essaie ceci en prenant soin de bien indiquer les classeurs :


Sub CopieProc()

Dim LeTexte As String

With ThisWorkbook.VBProject.VBComponents _
("ThisWorkbook").CodeModule
If .CountOfLines > 0 Then
LeTexte = .Lines(1, .CountOfLines)
End If
End With

If LeTexte <> "" Then
With Workbooks("Classeur2.xls").VBProject. _
VBComponents("ThisWorkbook").CodeModule
.AddFromString LeTexte
End With
End If

End Sub


Salutations!



"Philou" a écrit dans le message de news:
Bonjour,

Je cherche à copier grace à VBA les macro contenues dans ThisWorkBook d'un
classeur sur le ThisWorkBook d'un autre classeur.
Les macros du genre Workbook_Open.....Workbook_SheetActivate.
Quelqu'un aurait-il une idée pour effectuer cette opération simplement car
je ne suis pas un pro de la programmation.
Merci !
Avatar
Philou
C'est génial !.....ton code marche à merveille :)
Je ne connaissais pas le fonctionnement des News avant hier soir, mais
franchement je trouve ça épatant.
Je pose une question sur laquelle je planche depuis 3 jours complets et là
on me répond dans la foulée avec en prime une solution qui fonctionne pour
me dépanner... Vraiment CHAPEAU !
Encore merci pour ton Code

"michdenis" a écrit dans le message de news:

Bonsoir Philou,

Essaie ceci en prenant soin de bien indiquer les classeurs :


Sub CopieProc()

Dim LeTexte As String

With ThisWorkbook.VBProject.VBComponents _
("ThisWorkbook").CodeModule
If .CountOfLines > 0 Then
LeTexte = .Lines(1, .CountOfLines)
End If
End With

If LeTexte <> "" Then
With Workbooks("Classeur2.xls").VBProject. _
VBComponents("ThisWorkbook").CodeModule
.AddFromString LeTexte
End With
End If

End Sub


Salutations!



"Philou" a écrit dans le message de news:


Bonjour,

Je cherche à copier grace à VBA les macro contenues dans ThisWorkBook d'un
classeur sur le ThisWorkBook d'un autre classeur.
Les macros du genre Workbook_Open.....Workbook_SheetActivate.
Quelqu'un aurait-il une idée pour effectuer cette opération simplement car
je ne suis pas un pro de la programmation.
Merci !





Avatar
Philou
Merci pour ton code qui fonctionne à merveille.

Peux tu me donner un renseignement suplémentaire ?
Une fois toutes les macros copiées sur le nouveau classeur, si je veux
supprimer ou modifier dans ce nouveau classeur à l'aide de VBA la macro
Workbook_Open() par exemple, comment dois-je faire ?

"michdenis" a écrit dans le message de news:

Bonsoir Philou,

Essaie ceci en prenant soin de bien indiquer les classeurs :


Sub CopieProc()

Dim LeTexte As String

With ThisWorkbook.VBProject.VBComponents _
("ThisWorkbook").CodeModule
If .CountOfLines > 0 Then
LeTexte = .Lines(1, .CountOfLines)
End If
End With

If LeTexte <> "" Then
With Workbooks("Classeur2.xls").VBProject. _
VBComponents("ThisWorkbook").CodeModule
.AddFromString LeTexte
End With
End If

End Sub


Salutations!



"Philou" a écrit dans le message de news:


Bonjour,

Je cherche à copier grace à VBA les macro contenues dans ThisWorkBook d'un
classeur sur le ThisWorkBook d'un autre classeur.
Les macros du genre Workbook_Open.....Workbook_SheetActivate.
Quelqu'un aurait-il une idée pour effectuer cette opération simplement car
je ne suis pas un pro de la programmation.
Merci !





Avatar
michdenis
Bonjour Philou,

Il y a plusieurs façons d'effectuer cette tâche... je t'offre une solution versatile que tu utiliser pour modifier un
effectuer une substitution d'un mot ou d'une ligne de code dans le module de ton choix et la procédure que tu auras
choisi.

Tu exécutes la procédure "RemplacerLigne()" en prenant bien soin de renseigner les paramètres de la ligne de code
"RemplacerLigne" .... Cette ligne de code peut être insérer à l'intérieur du cheminement de n'importe quelle procédure.

Attention : Lorsque l'on utilise une procédure de "Rechercher / Remplacer" , l'expression à rechercher doit être à ce
point spécifique pour que la procédure ne puisse modifier des expressions ou lignes de code qui ne seraient pas voulues
!

À mettre dans un module standard
'-------------------------
Sub RemplacerLigneDansProcédure()

'A ) Thisworkbook : Tu peux remplacer par le nom du module
'que tu désires ...
'B ) Workbook_Open : Nom de la procédure qui peut être
'remplacer par la procédure de ton choix
'C ) "Tito" : L'expression ou la ligne de code à remplacer
'D ) "Toto" : La nouvelle expression ou ligne de code

RemplacerLigne "ThisWorkbook", "Workbook_Open", "Tata", "Toto"

End Sub
'-------------------------

'Procédure à mettre dans un module standard.
'-------------------------------------
Sub RemplacerLigne(NomModule As String, NomSub As String, _
ChaineRecherchée As String, ChaineRemplace As String)

Dim A As Integer, Trouver As String
Dim LigneDuDébut As Integer
Dim NbLignesDeLaSub As Integer
Dim LastLineSub As Integer

With ThisWorkbook.VBProject.VBComponents(NomModule).codemodule
LigneDuDébut = .ProcStartLine("Workbook_Open", 0)
NbLignesDeLaSub = .ProcCountLines("Workbook_Open", 0)
LastLineSub = LigneDuDébut + NbLignesDeLaSub
For A = LigneDuDébut To LastLineSub
Trouver = InStr(.Lines(A, 1), ChaineRecherchée)
If Trouver <> 0 Then
.ReplaceLine A, Left(.Lines(A, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(A, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(A, 1)))
End If
Next
End With

End Sub
'-------------------------------------


Salutations!









"Philou" a écrit dans le message de news:
Merci pour ton code qui fonctionne à merveille.

Peux tu me donner un renseignement suplémentaire ?
Une fois toutes les macros copiées sur le nouveau classeur, si je veux
supprimer ou modifier dans ce nouveau classeur à l'aide de VBA la macro
Workbook_Open() par exemple, comment dois-je faire ?

"michdenis" a écrit dans le message de news:

Bonsoir Philou,

Essaie ceci en prenant soin de bien indiquer les classeurs :


Sub CopieProc()

Dim LeTexte As String

With ThisWorkbook.VBProject.VBComponents _
("ThisWorkbook").CodeModule
If .CountOfLines > 0 Then
LeTexte = .Lines(1, .CountOfLines)
End If
End With

If LeTexte <> "" Then
With Workbooks("Classeur2.xls").VBProject. _
VBComponents("ThisWorkbook").CodeModule
.AddFromString LeTexte
End With
End If

End Sub


Salutations!



"Philou" a écrit dans le message de news:


Bonjour,

Je cherche à copier grace à VBA les macro contenues dans ThisWorkBook d'un
classeur sur le ThisWorkBook d'un autre classeur.
Les macros du genre Workbook_Open.....Workbook_SheetActivate.
Quelqu'un aurait-il une idée pour effectuer cette opération simplement car
je ne suis pas un pro de la programmation.
Merci !





Avatar
Philou
Je dois partir maintenant donc Je teste tout ça se soir et je te tiens au
courant .
merci pour tout

"michdenis" a écrit dans le message de news:
#
Bonjour Philou,

Il y a plusieurs façons d'effectuer cette tâche... je t'offre une solution
versatile que tu utiliser pour modifier un

effectuer une substitution d'un mot ou d'une ligne de code dans le module
de ton choix et la procédure que tu auras

choisi.

Tu exécutes la procédure "RemplacerLigne()" en prenant bien soin de
renseigner les paramètres de la ligne de code

"RemplacerLigne" .... Cette ligne de code peut être insérer à l'intérieur
du cheminement de n'importe quelle procédure.


Attention : Lorsque l'on utilise une procédure de "Rechercher / Remplacer"
, l'expression à rechercher doit être à ce

point spécifique pour que la procédure ne puisse modifier des expressions
ou lignes de code qui ne seraient pas voulues

!

À mettre dans un module standard
'-------------------------
Sub RemplacerLigneDansProcédure()

'A ) Thisworkbook : Tu peux remplacer par le nom du module
'que tu désires ...
'B ) Workbook_Open : Nom de la procédure qui peut être
'remplacer par la procédure de ton choix
'C ) "Tito" : L'expression ou la ligne de code à remplacer
'D ) "Toto" : La nouvelle expression ou ligne de code

RemplacerLigne "ThisWorkbook", "Workbook_Open", "Tata", "Toto"

End Sub
'-------------------------

'Procédure à mettre dans un module standard.
'-------------------------------------
Sub RemplacerLigne(NomModule As String, NomSub As String, _
ChaineRecherchée As String, ChaineRemplace As String)

Dim A As Integer, Trouver As String
Dim LigneDuDébut As Integer
Dim NbLignesDeLaSub As Integer
Dim LastLineSub As Integer

With ThisWorkbook.VBProject.VBComponents(NomModule).codemodule
LigneDuDébut = .ProcStartLine("Workbook_Open", 0)
NbLignesDeLaSub = .ProcCountLines("Workbook_Open", 0)
LastLineSub = LigneDuDébut + NbLignesDeLaSub
For A = LigneDuDébut To LastLineSub
Trouver = InStr(.Lines(A, 1), ChaineRecherchée)
If Trouver <> 0 Then
.ReplaceLine A, Left(.Lines(A, 1) _
, Trouver - 1) & ChaineRemplace & _
Mid(.Lines(A, 1), Trouver + Len(ChaineRecherchée) _
, Len(.Lines(A, 1)))
End If
Next
End With

End Sub
'-------------------------------------


Salutations!









"Philou" a écrit dans le message de news:


Merci pour ton code qui fonctionne à merveille.

Peux tu me donner un renseignement suplémentaire ?
Une fois toutes les macros copiées sur le nouveau classeur, si je veux
supprimer ou modifier dans ce nouveau classeur à l'aide de VBA la macro
Workbook_Open() par exemple, comment dois-je faire ?

"michdenis" a écrit dans le message de news:

Bonsoir Philou,

Essaie ceci en prenant soin de bien indiquer les classeurs :


Sub CopieProc()

Dim LeTexte As String

With ThisWorkbook.VBProject.VBComponents _
("ThisWorkbook").CodeModule
If .CountOfLines > 0 Then
LeTexte = .Lines(1, .CountOfLines)
End If
End With

If LeTexte <> "" Then
With Workbooks("Classeur2.xls").VBProject. _
VBComponents("ThisWorkbook").CodeModule
.AddFromString LeTexte
End With
End If

End Sub


Salutations!



"Philou" a écrit dans le message de news:


Bonjour,

Je cherche à copier grace à VBA les macro contenues dans ThisWorkBook
d'un


classeur sur le ThisWorkBook d'un autre classeur.
Les macros du genre Workbook_Open.....Workbook_SheetActivate.
Quelqu'un aurait-il une idée pour effectuer cette opération simplement
car


je ne suis pas un pro de la programmation.
Merci !