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

VBA : Copie de feuille sans le code de son module...

3 réponses
Avatar
Domi
Bonsoir à tous,
Par cette macro, je réalise des copies "épurées" de la feuille AMModele , la
feuille crée prend pour nom le texte figurant en AE1 (n° incrémenté) :
Sheets("AMModele").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Worksheets("AMModele").[AE1]
With ThisWorkbook.ActiveSheet.UsedRange
.Value2 = .Value2
ActiveSheet.DrawingObjects.Delete
End With

la feuille AMModele contient elle même le code suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
patatipatata....
End Sub

Comment faire pour que le code de la feuille ( le code de son module) ne
sois pas copié sur la nouvelle feuille ?
J'ai bien trouvé dans les archives quelques solutions proposées (par
Frederic Sigonneau en particulier) mais je n'ai pas réussi à adapter quoi
que ce soit à mon code...
Merci pour votre aide.
Domi

3 réponses

Avatar
Joel
Bonsoir Domi,

on peut essayer d'intégrer cette partie de code :

Sub CopyFeuille()

Sheets("AMModele").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Worksheets("AMModele").[AE1]
With ThisWorkbook.ActiveSheet.UsedRange
.Value2 = .Value2
ActiveSheet.DrawingObjects.Delete
End With

EpurationCode

End Sub

Sub EpurationCode()
Dim i As Long
With ActiveWorkbook.VBProject.VBComponents("Feuil" &
ActiveSheet.Index).CodeModule
For i = .CountOfLines To 1 Step -1
.DeleteLines i
Next
End With

End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Domi" a écrit dans le message de
news:
Bonsoir à tous,
Par cette macro, je réalise des copies "épurées" de la feuille AMModele ,
la

feuille crée prend pour nom le texte figurant en AE1 (n° incrémenté) :
Sheets("AMModele").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Worksheets("AMModele").[AE1]
With ThisWorkbook.ActiveSheet.UsedRange
.Value2 = .Value2
ActiveSheet.DrawingObjects.Delete
End With

la feuille AMModele contient elle même le code suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
patatipatata....
End Sub

Comment faire pour que le code de la feuille ( le code de son module) ne
sois pas copié sur la nouvelle feuille ?
J'ai bien trouvé dans les archives quelques solutions proposées (par
Frederic Sigonneau en particulier) mais je n'ai pas réussi à adapter quoi
que ce soit à mon code...
Merci pour votre aide.
Domi





Avatar
michdenis
Bonjour Domi,

Essaie ceci pour détruire tout le code de la feuille copiée.
Tu inscris ceci à la suite de ta procédure

With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
End With


Salutations!




"Domi" a écrit dans le message de news:
Bonsoir à tous,
Par cette macro, je réalise des copies "épurées" de la feuille AMModele , la
feuille crée prend pour nom le texte figurant en AE1 (n° incrémenté) :
Sheets("AMModele").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Worksheets("AMModele").[AE1]
With ThisWorkbook.ActiveSheet.UsedRange
.Value2 = .Value2
ActiveSheet.DrawingObjects.Delete
End With

la feuille AMModele contient elle même le code suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
patatipatata....
End Sub

Comment faire pour que le code de la feuille ( le code de son module) ne
sois pas copié sur la nouvelle feuille ?
J'ai bien trouvé dans les archives quelques solutions proposées (par
Frederic Sigonneau en particulier) mais je n'ai pas réussi à adapter quoi
que ce soit à mon code...
Merci pour votre aide.
Domi
Avatar
Domi
Solution testée et approuvée ;o) j'adopte !
Celle de Joel, au dessus n'efface pas le code copiée, mais ne plante pas...

Merci
Domi

"michdenis" a écrit dans le message de
news:%
Bonjour Domi,

Essaie ceci pour détruire tout le code de la feuille copiée.
Tu inscris ceci à la suite de ta procédure

With
ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule

.DeleteLines 1, .CountOfLines
End With


Salutations!




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

Bonsoir à tous,
Par cette macro, je réalise des copies "épurées" de la feuille AMModele ,
la

feuille crée prend pour nom le texte figurant en AE1 (n° incrémenté) :
Sheets("AMModele").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Worksheets("AMModele").[AE1]
With ThisWorkbook.ActiveSheet.UsedRange
.Value2 = .Value2
ActiveSheet.DrawingObjects.Delete
End With

la feuille AMModele contient elle même le code suivant :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
patatipatata....
End Sub

Comment faire pour que le code de la feuille ( le code de son module) ne
sois pas copié sur la nouvelle feuille ?
J'ai bien trouvé dans les archives quelques solutions proposées (par
Frederic Sigonneau en particulier) mais je n'ai pas réussi à adapter quoi
que ce soit à mon code...
Merci pour votre aide.
Domi