Copier onglets sans formules

bonjour à tous,

sur l'exemple ci-joint je souhaite avoir un code qui me permet d'extraire dans un nouveau classeur et sans formule l'onglet Facture et le dernier onglet du fichier c'est à dire Mars-2016 sans les macros ni les boutons, ce premier classeur prendra comme nom Facture Mars 2016. et le même code extraira sur un 2ème classeur l'onglet ODA qui prendra comme nom ODA Mars-2016 (les deux classeurs produits seront sauvegardé sur le bureau).

et si par exemple je rajoute un autre mois par la suite (Avril-2016) et je clique sur ce code il extraira l'onglet Facture + l'onglet avril-2016 sur un classeur et l'onglet classeur ainsi de suite.

Merci d'avance

Bonjour,

Tu peux essayer un copier - coller (en valeur), comme ça tu n'as plus les formules.

Et pour le faire dans une macro ça donne un truc du style :

Sub valeur()

    Sheets("Base").Copy Before:=Sheets(7) 'Le nom de ta base
    Range("A1:AM480").Select 'Toutes tes lignes et colonnes
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 'le copier coller valeur
        :=False, Transpose:=False
    Application.CutCopyMode = False
End Sub

Bonjour romain,

ca marche pas

T'as bien changer le nom de la feuille et la plage de données ?


*changé

oui ca marche pas

Ah oui, regarde en changeant :

Before:=Sheets(7) par Before:=Sheets(2)

ca marche toujours pas

Bonjour,

en supposant que le mois en cours est le dernier onglet :

Sub dernierMois()
    Dim wb As Workbook

    Set wb = Workbooks.Add
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Copy Before:=wb.Sheets(1)
    With ActiveSheet.UsedRange
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    ThisWorkbook.Sheets("Facture ").Copy Before:=wb.Sheets(1)
    With ActiveSheet.UsedRange
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    ' enregistrer sous le nom du mois
    wb.SaveAs ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name
    ' fermeture
    'wb.Close
End Sub

A tester sachant que ça marche pas n'est pas une réponse...

eric

Bonjour Eric,

Merci pour ta réponse mais en cliquant sur le code il me copient les onglets Facture & Mars-2016 mais il insère aussi 3 onglets : (feuil1, feuil2 et feuil3)

2ème problème c'est qu'il garde le bouton que j'ai inséré dans le fichier original pour exécuter la macro alors qu'il doit disparaitre dans le fichier copié

ci-joint le fichier que j'ai obtenu

Cordialement

37mars-2016.xlsx (10.89 Ko)

Il ne les insère pas, il sont existants à la création du fichier.

Le fichier que tu avais fourni en 1er n'avait ni macros, ni boutons.

Je vois tout ça plus tard si personne d'autre est intervenu.

Met plutôt ton fichier, celui créé par la macro ne m'intéresse pas.

re eric,

tu trouveras ci-joint mon fichier...

Soit un peu plus rigoureuse au niveau des noms d'onglet :

"Facture " avec une espace derrière

" Mars-2016" avec une espace devant

idem pour Février-2016

Ca ajoute des plantages, donc des traitements inutiles.

Sub dernierMois()
    Dim wb As Workbook

    Set wb = Workbooks.Add
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Copy Before:=wb.Sheets(1)
    With ActiveSheet.UsedRange
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    ThisWorkbook.Sheets("Facture ").Copy Before:=wb.Sheets(1)
    With ActiveSheet.UsedRange
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    ActiveSheet.Shapes.Range(Array("Button 1")).Delete
    Application.DisplayAlerts = False
    For i = 1 To 3
        On Error Resume Next
        Sheets("Feuil" & i).Delete
    Next i
    On Error GoTo 0
    Application.DisplayAlerts = True
    ' enregistrer sous le nom du mois
   wb.SaveAs Trim(ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name)
    ' fermeture
   'wb.Close
End Sub

Bonjour,

Bonjour Eriiic,

Une adaptation du code précédemment envoyé.

Cdlt.

Option Explicit

Public Sub CopyToNewWorkbook()
Dim Book As Workbook, newBook As Workbook

    Application.ScreenUpdating = False
    Set Book = ThisWorkbook
    ' création nouveau classeur avec 1 feuille
    Set newBook = Workbooks.Add(xlWBATWorksheet)
    With Book
        .Worksheets("Facture ").Cells.Copy Destination:=newBook.Worksheets(1).Cells(1)
        .Worksheets(Book.Worksheets.Count).Copy after:=newBook.Worksheets(1)
    End With
    With newBook
        .SaveAs .Worksheets(newBook.Worksheets.Count).Name
        .Close Savechanges:=False
    End With

    Set newBook = Nothing: Set Book = Nothing

End Sub

Plus propre

edit: testé sur son dernier classeur :

  • manque le renommage de Feuil1 en "Facture "
  • et puis son bouton à enlever

Re,

Merci eriiic,

re, merci beaucoup eric ton code marche bien mais il reste deux petites rectifications que j'aimerais que tu fasses si c'est possible

1- je veux changer l'emplacement ou le classeur se sauvegarde : je veux que ce soit sur le DESKTOP

2-j'aimerais éviter la séléction du tableau dans le classeur copié (comme sur l'image ci-jointe)

jean-eric merci beaucoup a toi aussi pour ta contribution

sans titre

Jean-Eric j'ai commencé en partant du tien mais il fallait aussi modifier d'autres trucs (pastespecial etc) j'ai laissé tomber.

Pas grand chose mais plus rapide de rajouter 2 lignes sur le mien

A tester.

Merci beaucoup Eric....c'est ce que je cherchais

Cordialement.

re,

est ce que c'est possible de modifier le code pour qu'il exporte en même temps l'onglet ODA et en un 2ème classeur qui prendra comme nom ODA Mars-2016??? ???

on va attendre que tu aies fini de réfléchir et que tu aies tout dit

Rechercher des sujets similaires à "copier onglets formules"