OVH Cloud OVH Cloud

COPIE MACRO

17 réponses
Avatar
steph b
Bonjour,
je dispose d un fichier excel nommé "porte.xls" qui se trouve sur "c:\" qui
comporte une feuille nommée "PARIS"

dans ce fichier il y 2 module nommés "module21" et "module41"

je voudrais si possible créer un macro qui me copie dans un fichier excel
ouvert la feuille nommée "PARIS" du fichier "porte.xls" à L'IDENTIQUE avec
tous les champs, formats de cellules, boutons etc.... ainsi que les deux
modules nommés "module21" et "module41"

est ce possible?

merci d 'avance

et bien sûr me refermer le fichier "porte.xls" qui se trouve sur "c:\" sans
aucune modification.

10 réponses

1 2
Avatar
FFO
Salut à toi

Je te propose d'enregistrer une copie de ton document et de l'ouvrir
avec ce code :

ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)
Workbooks.Open Filename:=(ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)


Code à mettre dans ton document original

Celà devrait convenir

Dis moi !!!!!
Avatar
steph b
bonjour

merci mais ta macro ne fait que creer une copie du fichier en cours...


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

Salut à toi

Je te propose d'enregistrer une copie de ton document et de l'ouvrir
avec ce code :

ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)
Workbooks.Open Filename:=(ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)


Code à mettre dans ton document original

Celà devrait convenir

Dis moi !!!!!
Avatar
Jacquouille
Ben, si c'est pour copier "à l'identique" et que tu as une copie, tu
rebaptises cette copie .....et l'identique sera.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"steph b" a écrit dans le message de groupe de discussion :
4dee05fe$0$14667$

bonjour

merci mais ta macro ne fait que creer une copie du fichier en cours...


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

Salut à toi

Je te propose d'enregistrer une copie de ton document et de l'ouvrir
avec ce code :

ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)
Workbooks.Open Filename:=(ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)


Code à mettre dans ton document original

Celà devrait convenir

Dis moi !!!!!
Avatar
steph b
excusez moi j ai du mal m'exprimer alors
je dispose d un fichier excel nommé "porte.xls" qui se trouve sur "c:" qui
comporte une feuille nommée "PARIS"

dans ce fichier il y 2 module nommés "module21" et "module41"

je voudrais si possible créer un macro qui me copie dans un fichier excel
ouvert mais c'est un autre fichier excel nommé par exemple "essai" qui ne
contient pas la feuille nommée "PARIS" ni les
les champs, ni formats de cellules, ni boutons etc.... ni les deux modules
nommés "module21" et "module41"

et je voudrais copier cette feuille à l'identique avec les deux modules.sur
ce fichier "essai"


est ce possible?

merci d 'avance

et bien sûr me refermer le fichier "porte.xls" qui se trouve sur "c:" sans
aucune modification.


"Jacquouille" a écrit dans le message de news:
4dee0e38$0$14253$
Ben, si c'est pour copier "à l'identique" et que tu as une copie, tu
rebaptises cette copie .....et l'identique sera.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"steph b" a écrit dans le message de groupe de discussion :
4dee05fe$0$14667$

bonjour

merci mais ta macro ne fait que creer une copie du fichier en cours...


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

Salut à toi

Je te propose d'enregistrer une copie de ton document et de l'ouvrir
avec ce code :

ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)
Workbooks.Open Filename:=(ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)


Code à mettre dans ton document original

Celà devrait convenir

Dis moi !!!!!

Avatar
DanielCo
Bonjour,
Essaie :
Sub test()
Workbooks.Open "c:porte.xls"
Set SourceWB = ActiveWorkbook
Set CibleWB = ThisWorkbook
Sheets("PARIS").Copy Before:=Workbooks("porte.xls").Sheets(1)
FichTemp = "d:donneesdanielmpfe~tmpexport.bas"
On Error Resume Next
NomModule = "Module21"
SourceWB.VBProject.VBComponents(NomModule).Export FichTemp
CibleWB.VBProject.VBComponents.Import FichTemp
Kill FichTemp
NomModule = "Module41"
SourceWB.VBProject.VBComponents(NomModule).Export FichTemp
CibleWB.VBProject.VBComponents.Import FichTemp
Kill FichTemp
On Error GoTo 0
ActiveWorkbook.Close False
End Sub
Cordialement.
Daniel


excusez moi j ai du mal m'exprimer alors
je dispose d un fichier excel nommé "porte.xls" qui se trouve sur "c:" qui
comporte une feuille nommée "PARIS"

dans ce fichier il y 2 module nommés "module21" et "module41"

je voudrais si possible créer un macro qui me copie dans un fichier excel
ouvert mais c'est un autre fichier excel nommé par exemple "essai" qui ne
contient pas la feuille nommée "PARIS" ni les
les champs, ni formats de cellules, ni boutons etc.... ni les deux modules
nommés "module21" et "module41"

et je voudrais copier cette feuille à l'identique avec les deux modules.sur
ce fichier "essai"


est ce possible?

merci d 'avance

et bien sûr me refermer le fichier "porte.xls" qui se trouve sur "c:" sans
aucune modification.


"Jacquouille" a écrit dans le message de news:
4dee0e38$0$14253$
Ben, si c'est pour copier "à l'identique" et que tu as une copie, tu
rebaptises cette copie .....et l'identique sera.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"steph b" a écrit dans le message de groupe de discussion :
4dee05fe$0$14667$

bonjour

merci mais ta macro ne fait que creer une copie du fichier en cours...


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

Salut à toi

Je te propose d'enregistrer une copie de ton document et de l'ouvrir
avec ce code :

ThisWorkbook.SaveCopyAs (ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)
Workbooks.Open Filename:=(ThisWorkbook.Path & "Copie de " &
ThisWorkbook.Name)


Code à mettre dans ton document original

Celà devrait convenir

Dis moi !!!!!

Avatar
MichD
Bonjour,

Une façon de faire. Le code est dans le classeur Source, celui qui doit
exporter une de ses feuilles et ses 2 modules standards.

Je copie l'intégralité de la feuil1 vers le classeur2.xls. Comme cela toutes les
caractéristiques de la feuille seront présentes dans la copie de celle-ci dans
l'autre classeur. Il y a cependant un "hic" dans le cas où tu as des noms définis
au niveau du classeur (insertion / nom / définir) identiques dans la feuille source
et dans la feuille de destination. Les noms de la feuille copiée seront des noms
définis au niveau de la feuille seulement. Et la procédure générera un message
pour t'avertir de la situation.

'------------------------------------------
Sub test()
Dim Code1 As String, Code2 As String
Dim Wk As Workbook

'classeur de destination
Set Wk = Workbooks("Classeur2.xls")

With ThisWorkbook
'Copie de la feuille de calcul
.Worksheets("Feuil1").Copy after:=Wk.Worksheets(Worksheets.Count)

'Met dans une variable "String" le code des 2 modules
With .VBProject.VBComponents("Module1").CodeModule
Code1 = .Lines(1, .CountOfLines)
End With
With .VBProject.VBComponents("Module2").CodeModule
Code2 = .Lines(1, .CountOfLines)
End With
End With

With Wk.VBProject.VBComponents
With .Add(1) 'Ajout d'un module
.CodeModule.AddFromString Code1 'insère le code
End With
With .Add(1)
.CodeModule.AddFromString Code2
End With
End With
End Sub
'------------------------------------------


MichD
--------------------------------------------
"steph b" a écrit dans le message de groupe de discussion : 4dedda36$0$30780$

Bonjour,
je dispose d un fichier excel nommé "porte.xls" qui se trouve sur "c:" qui
comporte une feuille nommée "PARIS"

dans ce fichier il y 2 module nommés "module21" et "module41"

je voudrais si possible créer un macro qui me copie dans un fichier excel
ouvert la feuille nommée "PARIS" du fichier "porte.xls" à L'IDENTIQUE avec
tous les champs, formats de cellules, boutons etc.... ainsi que les deux
modules nommés "module21" et "module41"

est ce possible?

merci d 'avance

et bien sûr me refermer le fichier "porte.xls" qui se trouve sur "c:" sans
aucune modification.
Avatar
steph b
ca ne marche pas je suis désolé
je pense que j'ai oublie de préciser qu'au moment ou j'execute la macro je
suis sous le fichiers destination où tout doit etre copié.

merci

"MichD" a écrit dans le message de news:
isl7a7$r0e$
Bonjour,

Une façon de faire. Le code est dans le classeur Source, celui qui doit
exporter une de ses feuilles et ses 2 modules standards.

Je copie l'intégralité de la feuil1 vers le classeur2.xls. Comme cela
toutes les
caractéristiques de la feuille seront présentes dans la copie de celle-ci
dans
l'autre classeur. Il y a cependant un "hic" dans le cas où tu as des noms
définis
au niveau du classeur (insertion / nom / définir) identiques dans la
feuille source
et dans la feuille de destination. Les noms de la feuille copiée seront
des noms
définis au niveau de la feuille seulement. Et la procédure générera un
message
pour t'avertir de la situation.

'------------------------------------------
Sub test()
Dim Code1 As String, Code2 As String
Dim Wk As Workbook

'classeur de destination
Set Wk = Workbooks("Classeur2.xls")

With ThisWorkbook
'Copie de la feuille de calcul
.Worksheets("Feuil1").Copy after:=Wk.Worksheets(Worksheets.Count)

'Met dans une variable "String" le code des 2 modules
With .VBProject.VBComponents("Module1").CodeModule
Code1 = .Lines(1, .CountOfLines)
End With
With .VBProject.VBComponents("Module2").CodeModule
Code2 = .Lines(1, .CountOfLines)
End With
End With

With Wk.VBProject.VBComponents
With .Add(1) 'Ajout d'un module
.CodeModule.AddFromString Code1 'insère le code
End With
With .Add(1)
.CodeModule.AddFromString Code2
End With
End With
End Sub
'------------------------------------------


MichD
--------------------------------------------
"steph b" a écrit dans le message de groupe de discussion :
4dedda36$0$30780$

Bonjour,
je dispose d un fichier excel nommé "porte.xls" qui se trouve sur "c:"
qui
comporte une feuille nommée "PARIS"

dans ce fichier il y 2 module nommés "module21" et "module41"

je voudrais si possible créer un macro qui me copie dans un fichier excel
ouvert la feuille nommée "PARIS" du fichier "porte.xls" à L'IDENTIQUE avec
tous les champs, formats de cellules, boutons etc.... ainsi que les deux
modules nommés "module21" et "module41"

est ce possible?

merci d 'avance

et bien sûr me refermer le fichier "porte.xls" qui se trouve sur "c:"
sans
aucune modification.



Avatar
MichD
Comme ceci :

'-------------------------------------
Sub test()
Dim Code1 As String, Code2 As String
Dim Wk As Workbook

'classeur source où sont les données et le code
Set Wk = Workbooks("Classeur2.xls") 'nom à adapter

With Wk
'Copie de la feuille de calcul
.Worksheets("Feuil1").Copy after:=ThisWorkbook.Worksheets(Worksheets.Count)

'Met dans une variable "String" le code des 2 modules
'adapte le nom des 2 modules que tu veux copier
With .VBProject.VBComponents("Module1").CodeModule
Code1 = .Lines(1, .CountOfLines)
End With
With .VBProject.VBComponents("Module2").CodeModule
Code2 = .Lines(1, .CountOfLines)
End With
End With

With ThisWorkbook.VBProject.VBComponents
With .Add(1) 'Ajout d'un module
With .CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
.AddFromString Code1 'insère le code
End With
End With
With .Add(1)
With .CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
.AddFromString Code2 'insère le code
End With
End With
End With
End Sub
'------------------------------------

MichD
--------------------------------------------
Avatar
steph b
dsolé mais ca plante à ce niveau
Set Wk = Workbooks("Classeur2.xls") 'nom à adapter

pourtant j'ai bien mis le chemin et le nom du fichier.xls

"MichD" a écrit dans le message de news:
islc3v$ago$
Comme ceci :

'-------------------------------------
Sub test()
Dim Code1 As String, Code2 As String
Dim Wk As Workbook

'classeur source où sont les données et le code
Set Wk = Workbooks("Classeur2.xls") 'nom à adapter

With Wk
'Copie de la feuille de calcul
.Worksheets("Feuil1").Copy
after:=ThisWorkbook.Worksheets(Worksheets.Count)

'Met dans une variable "String" le code des 2 modules
'adapte le nom des 2 modules que tu veux copier
With .VBProject.VBComponents("Module1").CodeModule
Code1 = .Lines(1, .CountOfLines)
End With
With .VBProject.VBComponents("Module2").CodeModule
Code2 = .Lines(1, .CountOfLines)
End With
End With

With ThisWorkbook.VBProject.VBComponents
With .Add(1) 'Ajout d'un module
With .CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
.AddFromString Code1 'insère le code
End With
End With
With .Add(1)
With .CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
.AddFromString Code2 'insère le code
End With
End With
End With
End Sub
'------------------------------------

MichD
--------------------------------------------

Avatar
MichD
| Set Wk = Workbooks("Classeur2.xls") 'nom à adapter

| pourtant j'ai bien mis le chemin et le nom du fichier.xls

Qui t'a parlé d'inscrire le chemin ? Ton fichier est déjà ouvert, tu n'as qu'à inscrire son nom.



MichD
--------------------------------------------
"steph b" a écrit dans le message de groupe de discussion : 4dee4016$0$14665$

dsolé mais ca plante à ce niveau
Set Wk = Workbooks("Classeur2.xls") 'nom à adapter

pourtant j'ai bien mis le chemin et le nom du fichier.xls

"MichD" a écrit dans le message de news:
islc3v$ago$
Comme ceci :

'-------------------------------------
Sub test()
Dim Code1 As String, Code2 As String
Dim Wk As Workbook

'classeur source où sont les données et le code
Set Wk = Workbooks("Classeur2.xls") 'nom à adapter

With Wk
'Copie de la feuille de calcul
.Worksheets("Feuil1").Copy
after:=ThisWorkbook.Worksheets(Worksheets.Count)

'Met dans une variable "String" le code des 2 modules
'adapte le nom des 2 modules que tu veux copier
With .VBProject.VBComponents("Module1").CodeModule
Code1 = .Lines(1, .CountOfLines)
End With
With .VBProject.VBComponents("Module2").CodeModule
Code2 = .Lines(1, .CountOfLines)
End With
End With

With ThisWorkbook.VBProject.VBComponents
With .Add(1) 'Ajout d'un module
With .CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
.AddFromString Code1 'insère le code
End With
End With
With .Add(1)
With .CodeModule
If .CountOfLines > 0 Then
.DeleteLines 1, .CountOfLines
End If
.AddFromString Code2 'insère le code
End With
End With
End With
End Sub
'------------------------------------

MichD
--------------------------------------------

1 2