XL 2013 VBA copie feuille et colle sans Objet (Shape-Image)

CGU2022.

XLDnaute Junior
Bonjour a tous...
Tout d'abord je suis très content d'être inscrit sur "Excel Downloads", vous m'êtes d'une très grande aide et mes sauveurs.. 👍👍👍

Mon problème du jour:
J'ai une macro qui me copie une feuille (cette feuille est assez lourde en vba images).
Elle copie donc cette feuille, crée un nouveau fichier et colle.. pas de problème tout cela marche.
Mon souci: Je ne veux pas coller: les images, objets et divers
Seulement les valeurs et la mise en forme...

Avez vous une idée ?


Public Sub Macro1()
Dim CC As Workbook 'déclare la variable CC (Classeur Copié)
Dim F As Worksheet 'déclare la variable CC (Classeur Copié)

'crée un nouveau classeur avec l'onglet Facture et le dernier onglet
ActiveSheet.Copy '''''''''''Sheets(Array("Facture ", Sheets(Sheets.Count).Name)).Copy 2feuilles
Set CC = ActiveWorkbook 'définit la classeur copié CC
Set F = ActiveSheet

F.Select 'sélectionne l'onglet F
Cells.Select
Cells.Copy 'copie toutes les cellules

Selection.PasteSpecial Paste:=xlPasteValues
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

F.Range("A1").Select 'sélectionne la cellule A1

F.Select 'sélectionne l'onglet F (facultatif)
Application.CutCopyMode = False 'supprime le clignotement lié à la copie
End Sub
 
Solution
Bonsoir

VB:
Public Sub Macro1()
Dim CC As Workbook 'déclare la variable CC (Classeur Copié)
Dim F As Worksheet 'déclare la variable CC (Feuille Classeur Copié)

'crée un nouveau classeur avec l'onglet Facture et le dernier onglet
Dim C As Workbook  'déclare la variable C (Classeur Source)
Dim CF As Worksheet 'déclare la variable CF (Feuille Classeur Source)
Set C = ActiveWorkbook
Set CF = C.Worksheets(ActiveSheet.Name)
    CF.Unprotect "MotDePasse" ' Le mot de passe de la feuille (Feuille Classeur Source) : exemple : "MotDePasse"
    CF.Copy ' Copier cette Feuille dans un nouveau classeur
Set CC = ActiveWorkbook 'définit le classeur copié CC
Set F = CC.Worksheets(ActiveSheet.Name) 'définit la feuille copié F
    F.DrawingObjects.Delete...

laurent950

XLDnaute Accro
Bonjour,

VB:
Public Sub Macro1()
Dim CC As Workbook 'déclare la variable CC (Classeur Copié)
Dim F As Worksheet 'déclare la variable CC (Classeur Copié)

'crée un nouveau classeur avec l'onglet Facture et le dernier onglet
Sheets(ActiveSheet.Name).Copy ' Copier cette Feuille dans un nouveau classeur
Set CC = ActiveWorkbook 'définit le classeur copié CC
Set F = CC.Worksheets(ActiveSheet.Name) 'définit la feuille copié F
    F.DrawingObjects.Delete 'Supprime tous : les images, objets et divers de la feuille copié F
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour CGU, bonjour le forum,

Essaie avec mon code modifié :

VB:
Public Sub Macro2()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variabvle CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OD (Onglet Destination)
Dim OJ As Shape 'déclare la variable OJ (ObJet)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CS = ThisWorkbook 'définit la classeur source CS
Set OS = CS.ActiveSheet 'définit l'onglet source
OS.Copy 'copie l'onglet source dans un classeur vierge
Set CD = ActiveWorkbook 'définit la classeur destination
Set OD = CD.Worksheets(1) 'définit l'onglet destination
OD.Cells.Copy 'copie les cellules de l'onglet OD
OD.Range("A1").PasteSpecial xlPasteValues 'colle les valeurs dans A1 de l'onglet OD
Application.CutCopyMode = False 'supprime le clignotement lié à la copie
For Each OJ In OD.Shapes 'boucles sur tous les objects OJ de l'onglet OD
    OJ.Delete 'supprime l'objet
Next OJ 'prochain objet de la boucle
OD.Range("A1").Select 'sélectionne la cellule A1
End Sub
 

CGU2022.

XLDnaute Junior
Merci vos deux solutions fonctionnent sur un fichier test....

Mais J'ai oublier de mentionner que dans mon fichier de travail la feuille à copier est protégée par mdp
et que la copie ne doit pas prendre les macro et verrouiller la nouvelle feuille.
 
Dernière édition:

laurent950

XLDnaute Accro
Bonsoir

VB:
Public Sub Macro1()
Dim CC As Workbook 'déclare la variable CC (Classeur Copié)
Dim F As Worksheet 'déclare la variable CC (Feuille Classeur Copié)

'crée un nouveau classeur avec l'onglet Facture et le dernier onglet
Dim C As Workbook  'déclare la variable C (Classeur Source)
Dim CF As Worksheet 'déclare la variable CF (Feuille Classeur Source)
Set C = ActiveWorkbook
Set CF = C.Worksheets(ActiveSheet.Name)
    CF.Unprotect "MotDePasse" ' Le mot de passe de la feuille (Feuille Classeur Source) : exemple : "MotDePasse"
    CF.Copy ' Copier cette Feuille dans un nouveau classeur
Set CC = ActiveWorkbook 'définit le classeur copié CC
Set F = CC.Worksheets(ActiveSheet.Name) 'définit la feuille copié F
    F.DrawingObjects.Delete 'Supprime tous : les images, objets et divers de la feuille copié F
CF.Protect "MotDePasse"  ' Le mot de passe de la feuille (Feuille Classeur Source) : exemple : "MotDePasse"
' Enregistre le classeur sans VBA
ActiveWorkbook.SaveAs Filename:= _
C.Parent.DefaultFilePath & "\" & CF.Name & "test.xlsx" _
, FileFormat:=xlWorkbookDefault, CreateBackup:=False
End Sub
 
Dernière édition:

CGU2022.

XLDnaute Junior
Bonsoir

VB:
Public Sub Macro1()
Dim CC As Workbook 'déclare la variable CC (Classeur Copié)
Dim F As Worksheet 'déclare la variable CC (Classeur Copié)

'crée un nouveau classeur avec l'onglet Facture et le dernier onglet
Dim C As Workbook  'déclare la variable CC (Classeur Source)
Dim CF As Worksheet 'déclare la variable CC (Classeur Source)
Set C = ActiveWorkbook
Set CF = C.Worksheets(ActiveSheet.Name)
    CF.Unprotect "MotDePasse" ' Le mot de passe de la feuile (Classeur Source) : exemple : "MotDePasse"
    CF.Copy ' Copier cette Feuille dans un nouveau classeur
Set CC = ActiveWorkbook 'définit le classeur copié CC
Set F = CC.Worksheets(ActiveSheet.Name) 'définit la feuille copié F
    F.DrawingObjects.Delete 'Supprime tous : les images, objets et divers de la feuille copié F
CF.Protect "MotDePasse"  ' Le mot de passe de la feuile (Classeur Source) : exemple : "MotDePasse"
' Enregistre le classeur sans VBA
ActiveWorkbook.SaveAs Filename:= _
C.Parent.DefaultFilePath & "\" & CF.Name & "test.xlsx" _
, FileFormat:=xlWorkbookDefault, CreateBackup:=False
End Sub
👍 👍 👍 👍
 

Discussions similaires

Réponses
2
Affichages
1 K

Statistiques des forums

Discussions
311 730
Messages
2 081 978
Membres
101 854
dernier inscrit
micmag26