Copier une feuille vers un classeur fermé

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
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:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
861
Retour