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

Copier Onglet dans un fichier avec sa macro

8 réponses
Avatar
Aiwa
Bonjour, j'ai un fichier qui a plusieur petit programme dans les onglets
J'aimerais savoir comment copier un onglet seulement avec sa macro pour
l'enrégistrer sur un fichier seul pour le donnée a quelqu'un sans lui donner
mon fichier avec toute les onglets.

Merci à l'avance

8 réponses

Avatar
michdenis
Dans le classeur où il y a ton onglet à copier, tu exécutes
cette ligne de code :

Sub test()
Worksheets("NomOngletACopier").copy
with Activewokbook
.SaveAs "c:ExcelNomDuNouveauFicier.xls"
.close
end with
end sub

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

Bonjour, j'ai un fichier qui a plusieur petit programme dans les onglets
J'aimerais savoir comment copier un onglet seulement avec sa macro pour
l'enrégistrer sur un fichier seul pour le donnée a quelqu'un sans lui donner
mon fichier avec toute les onglets.

Merci à l'avance
Avatar
Pat
Bonjour,
j'ai testé cela mais les liens sont conservés et les macros de l'ancien
fichier aussi.
Comment éviter de garder des références au fichier d'origine et avoir un
onglet vraiment libre ?


"michdenis" a écrit dans le message de news:
%
Dans le classeur où il y a ton onglet à copier, tu exécutes
cette ligne de code :

Sub test()
Worksheets("NomOngletACopier").copy
with Activewokbook
.SaveAs "c:ExcelNomDuNouveauFicier.xls"
.close
end with
end sub

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

Bonjour, j'ai un fichier qui a plusieur petit programme dans les onglets
J'aimerais savoir comment copier un onglet seulement avec sa macro pour
l'enrégistrer sur un fichier seul pour le donnée a quelqu'un sans lui
donner
mon fichier avec toute les onglets.

Merci à l'avance



Avatar
michdenis
Soit plus explicite, De quels liens, références parles-tu ? Lien des
formules ?
Tu veux conserver les formules sans les liens ?
Les plages nommées de ta feuille ont aussi des liens ?

Dans ta question, tu dis :
"comment copier un onglet seulement avec sa macro"

et tu veux supprimer toutes les macros ? que dois-je comprendre ?

Tu veux conserver qu'une macro ? Quel est son nom ? où est-elle située ?

je le répête, tu dois être très explicite dans ta demande ...



"Pat" a écrit dans le message de news:
%230%230$
Bonjour,
j'ai testé cela mais les liens sont conservés et les macros de l'ancien
fichier aussi.
Comment éviter de garder des références au fichier d'origine et avoir un
onglet vraiment libre ?


"michdenis" a écrit dans le message de news:
%
Dans le classeur où il y a ton onglet à copier, tu exécutes
cette ligne de code :

Sub test()
Worksheets("NomOngletACopier").copy
with Activewokbook
.SaveAs "c:ExcelNomDuNouveauFicier.xls"
.close
end with
end sub

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

Bonjour, j'ai un fichier qui a plusieur petit programme dans les onglets
J'aimerais savoir comment copier un onglet seulement avec sa macro pour
l'enrégistrer sur un fichier seul pour le donnée a quelqu'un sans lui
donner
mon fichier avec toute les onglets.

Merci à l'avance



Avatar
Pat
Excuse moi michdenis mais je ne suis pas le demandeur original, mais le
sujet intéresse.

Je désire copier un onglet seul sans trainer les liens ni les variables
qu'il avait avec les autres onglets de son classeur d'origine, seulement
garder les formules simples (sans liens externes à l'onglet) et remplacer
les case contenant des liens par la valeur actuelle qu'elles ont (une sorte
de copier/coller valeurs)



"michdenis" a écrit dans le message de news:
%
Soit plus explicite, De quels liens, références parles-tu ? Lien des
formules ?
Tu veux conserver les formules sans les liens ?
Les plages nommées de ta feuille ont aussi des liens ?

Dans ta question, tu dis :
"comment copier un onglet seulement avec sa macro"

et tu veux supprimer toutes les macros ? que dois-je comprendre ?

Tu veux conserver qu'une macro ? Quel est son nom ? où est-elle située ?

je le répête, tu dois être très explicite dans ta demande ...




Avatar
michdenis
Tu copies ces procédures dans le classeur où est
située la feuille que tu veux copier.

Enlève dans le nouveau classeur
- tout le code du classeur
- enlève dans les formules toutes les références
faisant appel à d'autres classeurs.

- ne touche pas aux noms (plages nommées) ou formules
(pas mentionnées dans ta question)

'------------------------------------------
Sub test()
Dim Wk As Workbook

'copier la feuille
Worksheets("Feuil1").Copy
Set Wk = ActiveWorkbook
SupprimeToutCodeEtFormulaire Wk
Substituer_LienFormule_ParValeur Wk.Worksheets(1)

End Sub

'------------------------------------------
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = Wk.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'------------------------------------------
Sub Substituer_LienFormule_ParValeur(Feuille As Worksheet)

Dim Cherche As String, Rg As Range
Dim Adr As String, C As Range

With Wk
With Feuil1
Set Rg = .Cells.SpecialCells(xlCellTypeFormulas)
End With
End With
Cherche = "["
With Rg
Set C = .Find(Cherche, , xlFormulas, xlPart)
If Not C Is Nothing Then
Adr = C.Address
Do
C.Value = C.Value
Set C = .FindNext
Loop Until C Is Nothing
End If
End With
End Sub
'------------------------------------------












"Pat" a écrit dans le message de news:
e2%
Excuse moi michdenis mais je ne suis pas le demandeur original, mais le
sujet intéresse.

Je désire copier un onglet seul sans trainer les liens ni les variables
qu'il avait avec les autres onglets de son classeur d'origine, seulement
garder les formules simples (sans liens externes à l'onglet) et remplacer
les case contenant des liens par la valeur actuelle qu'elles ont (une sorte
de copier/coller valeurs)



"michdenis" a écrit dans le message de news:
%
Soit plus explicite, De quels liens, références parles-tu ? Lien des
formules ?
Tu veux conserver les formules sans les liens ?
Les plages nommées de ta feuille ont aussi des liens ?

Dans ta question, tu dis :
"comment copier un onglet seulement avec sa macro"

et tu veux supprimer toutes les macros ? que dois-je comprendre ?

Tu veux conserver qu'une macro ? Quel est son nom ? où est-elle située ?

je le répête, tu dois être très explicite dans ta demande ...




Avatar
Aiwa
Bonjour michdenis
C'est tu possible le faire sans macro, et aussi ma macro nest pas dans la
feuille mais dans un module,
j'ai poser la question 2 fois je M'en excuse car j'avais pas acces a ce site
depuis le 23 déc

"michdenis" a écrit :

Tu copies ces procédures dans le classeur où est
située la feuille que tu veux copier.

Enlève dans le nouveau classeur
- tout le code du classeur
- enlève dans les formules toutes les références
faisant appel à d'autres classeurs.

- ne touche pas aux noms (plages nommées) ou formules
(pas mentionnées dans ta question)

'------------------------------------------
Sub test()
Dim Wk As Workbook

'copier la feuille
Worksheets("Feuil1").Copy
Set Wk = ActiveWorkbook
SupprimeToutCodeEtFormulaire Wk
Substituer_LienFormule_ParValeur Wk.Worksheets(1)

End Sub

'------------------------------------------
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = Wk.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'------------------------------------------
Sub Substituer_LienFormule_ParValeur(Feuille As Worksheet)

Dim Cherche As String, Rg As Range
Dim Adr As String, C As Range

With Wk
With Feuil1
Set Rg = .Cells.SpecialCells(xlCellTypeFormulas)
End With
End With
Cherche = "["
With Rg
Set C = .Find(Cherche, , xlFormulas, xlPart)
If Not C Is Nothing Then
Adr = C.Address
Do
C.Value = C.Value
Set C = .FindNext
Loop Until C Is Nothing
End If
End With
End Sub
'------------------------------------------












"Pat" a écrit dans le message de news:
e2%
Excuse moi michdenis mais je ne suis pas le demandeur original, mais le
sujet intéresse.

Je désire copier un onglet seul sans trainer les liens ni les variables
qu'il avait avec les autres onglets de son classeur d'origine, seulement
garder les formules simples (sans liens externes à l'onglet) et remplacer
les case contenant des liens par la valeur actuelle qu'elles ont (une sorte
de copier/coller valeurs)



"michdenis" a écrit dans le message de news:
%
> Soit plus explicite, De quels liens, références parles-tu ? Lien des
> formules ?
> Tu veux conserver les formules sans les liens ?
> Les plages nommées de ta feuille ont aussi des liens ?
>
> Dans ta question, tu dis :
> "comment copier un onglet seulement avec sa macro"
>
> et tu veux supprimer toutes les macros ? que dois-je comprendre ?
>
> Tu veux conserver qu'une macro ? Quel est son nom ? où est-elle située ?
>
> je le répête, tu dois être très explicite dans ta demande ...
>
>




Avatar
Philippe.R
Bonsoir,
Voir la réponse donnée en complément dans le fil d'origine.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Aiwa" a écrit dans le message de
news:
Bonjour michdenis
C'est tu possible le faire sans macro, et aussi ma macro nest pas dans la
feuille mais dans un module,
j'ai poser la question 2 fois je M'en excuse car j'avais pas acces a ce
site
depuis le 23 déc

"michdenis" a écrit :

Tu copies ces procédures dans le classeur où est
située la feuille que tu veux copier.

Enlève dans le nouveau classeur
- tout le code du classeur
- enlève dans les formules toutes les références
faisant appel à d'autres classeurs.

- ne touche pas aux noms (plages nommées) ou formules
(pas mentionnées dans ta question)

'------------------------------------------
Sub test()
Dim Wk As Workbook

'copier la feuille
Worksheets("Feuil1").Copy
Set Wk = ActiveWorkbook
SupprimeToutCodeEtFormulaire Wk
Substituer_LienFormule_ParValeur Wk.Worksheets(1)

End Sub

'------------------------------------------
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = Wk.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'------------------------------------------
Sub Substituer_LienFormule_ParValeur(Feuille As Worksheet)

Dim Cherche As String, Rg As Range
Dim Adr As String, C As Range

With Wk
With Feuil1
Set Rg = .Cells.SpecialCells(xlCellTypeFormulas)
End With
End With
Cherche = "["
With Rg
Set C = .Find(Cherche, , xlFormulas, xlPart)
If Not C Is Nothing Then
Adr = C.Address
Do
C.Value = C.Value
Set C = .FindNext
Loop Until C Is Nothing
End If
End With
End Sub
'------------------------------------------












"Pat" a écrit dans le message de news:
e2%
Excuse moi michdenis mais je ne suis pas le demandeur original, mais le
sujet intéresse.

Je désire copier un onglet seul sans trainer les liens ni les variables
qu'il avait avec les autres onglets de son classeur d'origine, seulement
garder les formules simples (sans liens externes à l'onglet) et remplacer
les case contenant des liens par la valeur actuelle qu'elles ont (une
sorte
de copier/coller valeurs)



"michdenis" a écrit dans le message de news:
%
> Soit plus explicite, De quels liens, références parles-tu ? Lien des
> formules ?
> Tu veux conserver les formules sans les liens ?
> Les plages nommées de ta feuille ont aussi des liens ?
>
> Dans ta question, tu dis :
> "comment copier un onglet seulement avec sa macro"
>
> et tu veux supprimer toutes les macros ? que dois-je comprendre ?
>
> Tu veux conserver qu'une macro ? Quel est son nom ? où est-elle située
> ?
>
> je le répête, tu dois être très explicite dans ta demande ...
>
>






Avatar
michdenis
Oui, tu peux faire l'équivalent manuellement.

A) pour copier la feuille
clic droit sur l'onglet de la feuille
menu contextuel -> déplacer ou copier
tu sélectionnes dans la liste déroulante -> nouveau classeur
et dans le bas de la fenête -> créer une copie

B ) Effacer le code
dans le nouveau classeur, tu ouvres l'éditeur de code et tu
supprime le code situé dans la feuille

C ) pour enlever les références dans les cellules
Menu édition / liaisons / rompres les liaisons

Si tu es dans une version plus ancienne, tu dois utiliser le bouton
parcourir
pour remonter dans l'arborescence des fichiers de l'explorateur windows et
sélectionner le classeur nouvellement créé. Évidemment ce qui signifie que
le classeur doit avoir été enregistré au moins une fois.

Sous excel 2007, onglet Données / connexions / rompre les liaisons.


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

Bonjour michdenis
C'est tu possible le faire sans macro, et aussi ma macro nest pas dans la
feuille mais dans un module,
j'ai poser la question 2 fois je M'en excuse car j'avais pas acces a ce site
depuis le 23 déc

"michdenis" a écrit :

Tu copies ces procédures dans le classeur où est
située la feuille que tu veux copier.

Enlève dans le nouveau classeur
- tout le code du classeur
- enlève dans les formules toutes les références
faisant appel à d'autres classeurs.

- ne touche pas aux noms (plages nommées) ou formules
(pas mentionnées dans ta question)

'------------------------------------------
Sub test()
Dim Wk As Workbook

'copier la feuille
Worksheets("Feuil1").Copy
Set Wk = ActiveWorkbook
SupprimeToutCodeEtFormulaire Wk
Substituer_LienFormule_ParValeur Wk.Worksheets(1)

End Sub

'------------------------------------------
Sub SupprimeToutCodeEtFormulaire(Wk As Workbook)

Dim VBComp As Object
Dim VBComps As Object

Set VBComps = Wk.VBProject.VBComponents

For Each VBComp In VBComps
Select Case VBComp.Type
Case 100
With VBComp.CodeModule
.DeleteLines 1, .CountOfLines
End With
Case Else
VBComps.Remove VBComp
End Select
Next VBComp

End Sub
'------------------------------------------
Sub Substituer_LienFormule_ParValeur(Feuille As Worksheet)

Dim Cherche As String, Rg As Range
Dim Adr As String, C As Range

With Wk
With Feuil1
Set Rg = .Cells.SpecialCells(xlCellTypeFormulas)
End With
End With
Cherche = "["
With Rg
Set C = .Find(Cherche, , xlFormulas, xlPart)
If Not C Is Nothing Then
Adr = C.Address
Do
C.Value = C.Value
Set C = .FindNext
Loop Until C Is Nothing
End If
End With
End Sub
'------------------------------------------












"Pat" a écrit dans le message de news:
e2%
Excuse moi michdenis mais je ne suis pas le demandeur original, mais le
sujet intéresse.

Je désire copier un onglet seul sans trainer les liens ni les variables
qu'il avait avec les autres onglets de son classeur d'origine, seulement
garder les formules simples (sans liens externes à l'onglet) et remplacer
les case contenant des liens par la valeur actuelle qu'elles ont (une
sorte
de copier/coller valeurs)



"michdenis" a écrit dans le message de news:
%
> Soit plus explicite, De quels liens, références parles-tu ? Lien des
> formules ?
> Tu veux conserver les formules sans les liens ?
> Les plages nommées de ta feuille ont aussi des liens ?
>
> Dans ta question, tu dis :
> "comment copier un onglet seulement avec sa macro"
>
> et tu veux supprimer toutes les macros ? que dois-je comprendre ?
>
> Tu veux conserver qu'une macro ? Quel est son nom ? où est-elle située ?
>
> je le répête, tu dois être très explicite dans ta demande ...
>
>