Copier une feuille vers un classeur fermé

Dim.Reichart

XLDnaute Occasionnel
Bonjour,
Encore une fois, je ne sais pas ce que je fais de travers, mais je n'arrive pas au résultat souhaité.

Je veux copier la feuille active (Dossier) vers le fichier Archives.xlsb (puis effacer la feuille Dossier, mais j'ai mis en commentaire pour l'instant)
VB:
Option Explicit
Sub test()
Dim Dossier As String
Dossier = ActiveSheet.Name

Workbooks.Open Filename:=ThisWorkbook.Path & "\Archives\Archives.xlsb"
ThisWorkbook.Worksheets(Dossier).Copy after:=Workbooks(ThisWorkbook.Path & "\Archives\Archives.xlsb").Worksheets(1)
Workbooks("Achives.xlsb").Close savechanges:=True
'Worksheets(Dossier).Delete

End Sub
Le fichier Archives.xlsb s'ouvre, mais reste vide et ne se ferme pas, je n'ai aucune erreur qui remonte lorsque je lance la macro.
Il n'y a pas de mot de passe ou de verrou sur le fichier Archives.xlsb, les modifications y sont autorisées.
Aussi, je ne sais pas pourquoi, mais After ne se met pas en majuscule, ainsi que savechanges.
Si je modifie "thisworkbook" par workbooks("suivi global.xlsb"), j'ai "erreur définie par l'application ou par l'objet".
Bref, c'est surement un truc tout bête, comme souvent, mais je ne le vois pas.
Merci d'avance.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Ecrit comme ceci, chez moi cela fonctionne très bien (évidement en changeant les noms de classeurs).
VB:
Sub test()
    Dim ws As Worksheet
    Dim wk As Workbook
    Set ws = ActiveSheet

    Set wk = Workbooks.Open(Filename:=ThisWorkbook.Path & "\Classeur.xlsm")
    ws.Copy after:=wk.Sheets(1)
    wk.Close savechanges:=True

    'Worksheets(Dossier).Delete

End Sub

Potassez bien
 

Dim.Reichart

XLDnaute Occasionnel
Bonjour Roblochon,
J'ai copié votre code et changé le nom du fichier, j'ai toujours "erreur définie par l'application ou par l'objet" (et l'aide Microsoft est très succincte sur ce sujet) EDIT: c'est parce que le fichier exercice n'etait pas dans le même dossier, je viens de le déplacer et je reteste.
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re bonjour,

Eh oui, je me doutais que vous alliez un moment donné ou un autre vous apercevoir, qu'il ne suffit pas de dire (que ce soit dans VBA ou la vie) qu'une chose est à un endroit pour qu'elle le soit réellement.

VB:
Sub test()
    Dim ws As Worksheet
    Dim wk As Workbook
    Dim FileName As String
   
    Set ws = ActiveSheet
    FileName = ThisWorkbook.Path & "\classeur.xlsm"
    If Dir(FileName) <> "" Then
        Set wk = Workbooks.Open(FileName)
        ws.Copy after:=wk.Sheets(1)
        wk.Close savechanges:=True
    Else
        MsgBox "Exécution interrompue: fichier '" & FileName & "' est introuvable!", vbExclamation, "Archivage"
    End If
    'Worksheets(Dossier).Delete

End Sub

bon stage
 
Dernière édition:

Discussions similaires

Réponses
8
Affichages
133

Statistiques des forums

Discussions
312 047
Messages
2 084 859
Membres
102 688
dernier inscrit
Biquet78