Création d'un nouveau classeur à partir d'un autre

Bonjour les experts en Excel !

Je voudrais vous demander si il est possible de réaliser un miracle pour moi, je vous explique :

J'ai un premier classeur où j'ai plusieurs feuilles de calculs qui comportent un peu de codage VBA ainsi que d'autres calculs réalisés grâce aux fonctions Excel. Je voudrais, grâce à un bouton, générer certaines feuilles de ce premier classeur dans un nouveau classeur et que ces valeurs soient brutes (c'est à dire pas de référence à l'ancien classeur) et que je choisisse moi même les feuilles qui seront reportés en bruts sur le nouveau classeur (enfaite je vais choisir juste la première fois lorsque je vais mettre le bouton, ça sera les mêmes feuilles qui devront être recopiées sur le nouveau classeur à chaque fois).

Merci d'avance !

Bonjour,

Si tu veux copier plusieurs feuilles d'un classeur dans un nouveau classeur, voici une méthode comme une autre sachant que dans l'instruction "Copy" si on ne précise pas la destination la méthode crée un nouveau classeur avec la ou les feuilles indiquées :

Sub Test()

    Worksheets(Array("Feuil1", "Feuil2")).Copy

End Sub

Excellent ! Merci bien !

Vous pouvez me dire comment faire pour que les données soient copiées en Valeurs brutes et non en formules ?

Bonjour,

Au moment de la copie, il n'est pas possible de modifier les valeurs des feuilles et afin de ne pas toucher aux feuilles originales (remplacer les formules par leur valeur), je te propose un petit code qui va remplacer toutes les formules des feuilles copiées par leur valeur :

Sub Test()

    Dim Cl As Workbook
    Dim Fe As Worksheet
    Dim Plage As Range

    ThisWorkbook.Worksheets(Array("Feuil1", "Feuil2")).Copy

    Set Cl = ActiveWorkbook

    For Each Fe In Cl.Worksheets

        Set Plage = DefPlage(Fe)
        If Not Plage Is Nothing Then Plage.Value = Plage.Value

    Next Fe

End Sub

Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range

    On Error GoTo Fin

    With Fe

        Set DefPlage = .Range(.Cells(L, C), _
                       .Cells(.Cells.Find("*", .[A1], -4123, , _
                       1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
                       2, 2).Column))

    End With

    Exit Function

Fin:

    Set DefPlage = Nothing

End Function
Rechercher des sujets similaires à "creation nouveau classeur partir"