Copie d'Onglets avec format, et valeur uniquement

WDAndCo

XLDnaute Impliqué
Bonsoir le Forum

Je voudrais copier des onglet avec le format et les valeurs. J'ai utilisé l'enregistreur, mais la copie ressemble plus a une copie d'écran sur un onglet ! Voici le code :
Code:
Sub Sauvegarde()

Dim Nom$
Sheets("DJS").Select
Nom$ = Cells(2, 14) ' Nom du futur classeur
    Sheets("Copie TNA").Visible = True
    Sheets("Copie TNA").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    Sheets("Copie VHR").Visible = True
    Sheets("Copie VHR").Select
    Cells.Select
    Selection.Delete Shift:=xlUp
    Sheets("Volet TNA").Select
    'ActiveWindow.SmallScroll Down:=-45
    Range("K42").Select
    ActiveSheet.Unprotect
    Cells.Select
    Selection.Copy
    Sheets("Copie TNA").Select
    Cells.Select
    ActiveSheet.Buttons.Add(257.25, 459, 43.5, 19.5).Select
    ActiveSheet.Paste
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Cells.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
    Sheets("Volet VHR").Select
    ActiveSheet.Unprotect
    Cells.Select
    Selection.Copy
    Sheets("Copie VHR").Select
    Cells.Select
    ActiveSheet.Buttons.Add(683.25, 254.25, 126.75, 4.5).Select
    ActiveSheet.Paste
    Cells.Select
    Application.CutCopyMode = False
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Columns("P:BC").Select
    Selection.EntireColumn.Hidden = False
    
    Sheets(Array("Copie TNA", "Copie VHR")).Select
    Sheets("Copie VHR").Activate
    Sheets(Array("Copie TNA", "Copie VHR")).Copy
    ChDir "G:\CRU Equipe\Archive CRU"
    ActiveWorkbook.SaveAs Filename:="G:\CRU Equipe\Archive CRU\" & Nom$ & ".xls" _
        , FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWindow.Close
    ActiveWindow.SelectedSheets.Visible = False
    Sheets("DJS").Select
End Sub

Quelqu'un a une solution, d'avance merci.
 

seb_sams

XLDnaute Nouveau
Re : Copie d'Onglets avec format, et valeur uniquement

Bonsoir,

Je ne suis pas certain d'avoir bien saisi ton problème.

Où veux tu copier tes onglets (feuilles) ?

Dans le même classeur ? Sheets("Feuille_test").copy before := Sheets(1)

Dans un autre classeur ? Workbooks("classeur_test1").Sheets("Feuille_test").copy before := Workbooks("classeur_test2").Sheets(1)
A la condition que les 2 classeurs soient déjà ouverts. Sinon, il faut demander d'ouvrir le classeur.

Ou alors, tout simplement si tu ne veux pas de VBA (ou que tu as juste une feuille), tu fais un clic droit sur la feuille et tu choisis "Déplacer ou copier...".

Je ne sais pas si j'ai répondu à ta question.

Bye
 
Dernière édition:

WDAndCo

XLDnaute Impliqué
Re : Copie d'Onglets avec format, et valeur uniquement

Bonsoir le Forum et merci sab_sams

Effectivement je voudrais copier dans le même classeur 2 feuilles, mais avec juste les formats et les valeurs, sans les formules et codes.

Dominique
 

seb_sams

XLDnaute Nouveau
Re : Copie d'Onglets avec format, et valeur uniquement

Salut Dominique,

Je n'avais pas tout compris effectivement.

J'ai une solution à ton problème mais je trouve que c'est long. Pour 100x100 (10k) cellules, ça me prend 1 minute sur mon ordi.
Je te laisse quand même le code :
Code:
Sub test()

Sheets(1).Copy before:=Sheets(2)
Application.ScreenUpdating = False

Dim cellule As Range
For Each cellule In Range(Sheets(2).Cells(1, 1), Sheets(2).Cells(100, 100))
cellule.Copy
cellule.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Next

Application.ScreenUpdating = True

End Sub

Je ne sais pas si tu peux copier coller directement la feuille en faisant ce que tu souhaites.
Si quelqu'un a mieux, je serais curieux de connaitre la solution. :)

Seb
 

seb_sams

XLDnaute Nouveau
Re : Copie d'Onglets avec format, et valeur uniquement

Re,

Finalement, je m'étais pris la tête pour rien (je débute encore en vba).

Voici une solution plus simple et rapide, j'espère qu'elle te conviendra.
Code:
Sub test()

' ajout d'une nouvelle feuille (à faire en premier car sinon, la copie est "annulée" et il n'y a rien à coller
Sheets.Add.Move After:=Sheets(Sheets.Count)
' Copie de la première feuille du classeur
Sheets(1).Cells.Copy
' Activation de la feuille sur laquelle on va coller la feuille copiée
Sheets(Sheets.Count).Activate
Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub

Seb
 

WDAndCo

XLDnaute Impliqué
Re : Copie d'Onglets avec format, et valeur uniquement

Bonsoir le Forum et merci sab_sams

Un mot, merci, pile poil, et pardon pour ce retard, mais pas de Forum au taf !
Si peut être un petit truc dans :
Code:
Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
que faut il modifier pour avoir les traits ?

Encore merci Seb, et bonne soirée.
Dominique
 

seb_sams

XLDnaute Nouveau
Re : Copie d'Onglets avec format, et valeur uniquement

Bonsoir Dominique,

Pas de pb pour le retard, on n'a pas tous le droit à Internet au boulot (trop de distraction). :)

J'ai rajouté une ligne de code et je pense que tu as maintenant ce que tu souhaites.
Code:
Sub test()

' ajout d'une nouvelle feuille (à faire en premier car sinon, la copie est "annulée" et il n'y a rien à coller
Sheets.Add.Move After:=Sheets(Sheets.Count)
' Copie de la première feuille du classeur
Sheets(1).Cells.Copy
' Activation de la feuille sur laquelle on va coller la feuille copiée
Sheets(Sheets.Count).Activate
Range("A1").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Range("A1").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub

Ce que je fais, c'est que je sélectionne toutes les cellules de la première feuille, je copie puis je colle tout (pour garder les lignes, les couleurs, ...) sur une nouvelle feuille et ensuite sur cette même feuille, je recolle les valeurs uniquement.

Pour faire ça, j'ai utilisé l'enregistreur et ensuite, j'ai à peine arrangé le code. Très utile l'enregistreur.

Bonne soirée,
 

Discussions similaires

Statistiques des forums

Discussions
312 674
Messages
2 090 785
Membres
104 664
dernier inscrit
jth