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.
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
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.
Bon, je n'ai pas compris pourquoi, puisque je n'ai rien fait d'autre que déplacer le fichier exercice, mais maintenant ca fonctionne dans mon fichier de travail (et exercice aussi).
Merci @Roblochon
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
Merci @Roblochon , le stage se termine en même temps que le mois, c'est pour ça que je rush le fichier, je n'ai pas envie de rendre un fichier inutilisable et de planter 6 mois de formation pour une mauvaise note au stage.