Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 Barbatruc
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 Barbatruc
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
 

Discussions similaires

Réponses
2
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…