Déplacer l'onglet actif vers un classeur Excel fermé

Bonjour,

Je cherche à l'aide d'un bouton sur un onglet à déplacer cet onglet vers un autre classeur Excel qui sera fermé.

J'ai commencé un début qui ouvre le classeur fermé mais je n'arrive pas à déplacer l'onglet.

Pour bien faire il faudrait également placer l'onglet déplacer après la feuil1 du classeur fermé.

Quelqu'un peut-il m'aider SVP?

Merci

Option Explicit

Private Sub CommandButton1_Click()

    ActiveSheet.Protect Password:="", UserInterfaceOnly:=True

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

'ouvre fichier archive
    ChDir "D:\UNI-T\EXCEL\Suivie de chantier INDEPENDANT\pour test archivage"
    Workbooks.Open Filename:="D:\UNI-T\EXCEL\Suivie de chantier INDEPENDANT\pour test archivage\archive v1.xlsm", UpdateLinks:=0

'copie l'onglet actif
    Windows("archive v1.xlsm").Activate
    ActiveSheet.Move After:=Workbooks("archive v1.xlsm").Sheets(1)
    Windows("test archive v1.xlsm").Activate

'ferme le fichier archive
    Windows("archive v1.xlsm").Activate
    ActiveWorkbook.Close

    Application.DisplayAlerts = True

Sheets("sommaire").Select

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

Unload Me  
End Sub

Private Sub CommandButton2_Click()

Unload Me
End Sub
5archive-v1.xlsm (15.20 Ko)

Bonjour

Tu indiques vouloir déplacer l'onglet mais ton code le duplique d'abord : quel intérêt ?

Le fichier d'archive ne nécessite ni les boutons de déclenchement ni d'être au format xlsm : un xlsx est plus approprié

Une proposition

Option Explicit

Private Sub CommandButton1_Click()
    Dim SH As Worksheet, WKC As Workbook

    Set SH = ThisWorkbook.ActiveSheet
    SH.Shapes.Range(Array("Oval 1")).Delete
    SH.Protect Password:="", UserInterfaceOnly:=True

    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

'ouvre fichier archive
    ChDir "D:\UNI-T\EXCEL\Suivie de chantier INDEPENDANT\pour test archivage"
    Workbooks.Open Filename:="D:\UNI-T\EXCEL\Suivie de chantier INDEPENDANT\pour test archivage\archive v1.xlsx", UpdateLinks:=0
    Set WKC = ActiveWorkbook

'Déplace l'onglet actif, sauvefade et ferme le classeur archive
    SH.Move After:=WKC.Sheets(WKC.Sheets.Count)
    WKC.Close SaveChanges:=True

    Sheets("sommaire").Select

    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic

Unload Me

End Sub

Bonjour 78chris,

Merci pour ta réponse rapide.

Tout fonctionne mais quelques fois (je n'ai pas identifié la source du problème) ca ne marche pas.

Si je clique sur mon bouton l'action fini avec ce message d'erreur et le classeur se ferme.

Une idée?

sans titre

RE

Esssaye d'ajouter avant le onload

    Set SH = Nothing
    Set WKC = Nothing

Tes onglets sont chargés en données ?

Y a t'il un risque qu'un onglet de même nom existe déjà dans le classeur d'archives ?

As-tu d'autres classeurs ouverts ?

Bonjour,

J'ai essayer avec ces 2 lignes avant le "unload" effectivement cela enlève le message d'erreur.

Par contre ca ferme le fichier d'origine automatiquement et lors du redémarrage de ce fichier ainsi que l'autre fichier, ca propose de l'ouvrir en lecture seule.

Pour les fichier test, chaque onglet n'as aucune donnée. En revanche, pour mon fichier final chaque onglet sera plus lourd.

Il pourra également avoir deux nom identique lors du déplacement de l'onglet.

Et il pourra aussi avoir d'autre classeur ouvert.

Bonjour

Dans ce cas il faudrait ajouter des contrôles d'existence de feuille de même nom dans le classeur d'archives et prévoir un rename avant le déplacement même si Excel semble s'en accommoder

J'ai fait divers tests et effectivement si on enchaîne n sauvegardes, et en particulier si un autre classeur est ouvert, cela finit par planter

Au dernier essai il semble que cela vienne de la suppression du bouton d'appel : en mettant cette ligne en commentaire, je n'ai plus eu de plantage

Je te laisse tester de ton côté.

Le cas échéant, il serait plus propre de prévoir un bouton dans dans la l'interface Excel que sur chaque onglet...

Rechercher des sujets similaires à "deplacer onglet actif classeur ferme"