Copie Feuille active + Mise en forme + Valeurs

Bonjour,

Je pense que ce sujet à déjà été traité mais malgré mes recherches j'ai du mal a trouver une macro similaire à mes attentes...

J'ai des fichiers déclaratifs dont les datas sont automatiquement récupérées dans un fichier sources tous les mois.

Chaque mois, il faut envoyer au fournisseur les données, sauf que je n'arrive pas a mettre en place de process. La copie simple ne transmet pas les valeurs, la copie Valeurs perds la mise en forme...

Les fichiers sont hébergés dans un Teams partagé ( si cela à une importance dans le fonctionnement de la macro)

Je souhaiterai avoir une macro simple permettant idéalement de créer un nouveau classeur avec une copie de la feuille active, avec copie des valeurs et mise en forme identique, classeur renommé comme la feuille (concaténer nom du classeur + Nom de la feuille ?) .

J'ai tenté de travailler avec ceci mais je n'ai pas les connaissance suffisante pour l'adapter

Sub COPIE_FEUILLE()
'
' COPIE_FEUILLE Macro

Sheets.Add after:=Sheets(Sheets.Count)

Sheets(11).Cells.Copy
Sheets(Sheets.Count).Range("A1").PasteSpecial Paste:=xlPasteFormats
Sheets(Sheets.Count).Range("A1").PasteSpecial Paste:=xlValues
Application.CutCopyMode = False

End Sub

Est il possible de copier l'ensemble du classeur en conservant la mise en forme et les valeurs ?

En vous remerciant par avance.

TM

Bonjour à tous,

Si c'est pour faire joli, tu imprimes ta feuille active en PDF !

Crdlmt

Bonjour,

J'aimerais bien que ce soit si simple.

Les datas sont transmises aux fournisseurs directement en Excel. Sur une copie simple du classeurs, ils recoivent les formules en erreurs car pas d'acces au fichier source hébergé en local.

Cdlt,

Bonjour à tous,

D'après l'explication, j'imagine que la macro ci-dessous devrait convenir :

Public Sub ExportNvxClasseur()
    Dim feuilIni As Worksheet: Set feuilIni = ActiveSheet
    Dim nvWb As Workbook: Set nvWb = Workbooks.Add

    feuilIni.Copy Before:=nvWb.Worksheets(1)

    Dim i As Long
    Application.DisplayAlerts = False
    For i = 2 To nvWb.Worksheets.Count
      nvWb.Worksheets(i).Delete
    Next i
    Application.DisplayAlerts = True

    feuilIni.UsedRange.Copy
    With nvWb
      .Worksheets(1).Range("A1").PasteSpecial xlPasteValues
      .SaveAs VBA.Left$(feuilIni.Parent.Name, Len(feuilIni.Parent.Name) - 5) _
        & "_" & feuilIni.Name & ".xlsx"
      .Close
    End With

    Application.CutCopyMode = False
End Sub

Le fichier exporté est enregistré dans le répertoire du classeur lançant la macro.

Bonjour,

Cela marche très bien ! C'est exactement ce dont j'avais besoin.

J'ai juste eu du mal a retrouver ou cela était sauvegardé.

Probablement du au fait que les fichiers sont hébergés sur un OneDrive, il n'a pas été sauvegardé sur le même répertoire ( ce qui est très bien!) mais dans Mes documents.

Est ce que cela aura le même comportement chez tous les utilisateurs ?

Merci,

Merci pour votre retour.

Ah ça doit dépendre de comment est organisé votre OneDrive et vos dossiers. Si vous voulez, on peut adapter de 2 manières :

Ou bien vous définissez un chemin de sauvegarde, et on l'ajoute dans l'instruction SaveAs, ou bien on peut aussi laisser le classeur ouvert, et vous le sauvegardez manuellement.

Pour ajouter un chemin, directement dans le code on peut faire comme cela (reste de la macro identique) :

Dim cheminSave As String
cheminSave = "C:\Users\PatrickLaCrevette\Documents\AFFAIRES"

feuilIni.UsedRange.Copy
With nvWb
  .Worksheets(1).Range("A1").PasteSpecial xlPasteValues
  .SaveAs cheminSave & "\" _
    & VBA.Left$(feuilIni.Parent.Name, Len(feuilIni.Parent.Name) - 5) _
    & "_" & feuilIni.Name & ".xlsx"
  .Close
End With

Je garde les 2 solutions que je proposerai aux utilisateurs.

Encore merci pour votre rapidité!

Bonne journée.

Thomas

Bonne journée à vous aussi.

Rechercher des sujets similaires à "copie feuille active mise forme valeurs"