Classeur précédent

Bonjour,

J'ai écrit une macro qui me permet de couper un classeur en deux et coller la sélection dans un nouveau classeur.
En revanche mon problème est que je voudrais pouvoir revenir sur le classeur initial pour pouvoir le sauvegarder et le fermer et ainsi reproduire la manip par la suite.
Hélas je ne trouve pas comment faire pour revenir au classeur précédent et tel qu'est mon code il n'enregistre que le "ActiveWorkbook".
Quelqu'un aurait-il une idée?
Merci beaucoup.

PS: Voici le code tel qu'il est:

Sub Découpe_Excel()
'
' Découpe_Excel Macro
'
' Touche de raccourci du clavier: Ctrl+Shift+D
'
    
Dim Dernierelign As Long

Dernierelign = Cells(Columns(4).Cells.Count, 1).End(xlUp).Row

    Rows("30389:" & Dernierelign).Select
    Selection.Cut
    Workbooks.Add
    ActiveSheet.Paste

   Dim nom As String
    nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
    ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
    rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")

End Sub

1 réponse

  • Votes
  • Date
  • Date décroissante
  1. Modérateur
    Salut,

    En toute fin de macro :
    ThisWorkbook.Close True

    1. Merci, mais n'y a t il pas moyen de garder la nouvelle fenêtre ouverte pour pouvoir refaire la manip plusieurs fois de rang?
    2. Modérateur
      @marcloarecTu peux, au choix :
      • fermer le classeur ActiveWorkbook :

      ActiveWorkbook.Close True
      • revenir au classeur ThisWorkbook :

      Sub Découpe_Excel()
      Dim Classeur_Source As Workbook
      Dim Dernierelign As Long
      Set Classeur_Source = ThisWorkbook
      Dernierelign = Cells(Columns(4).Cells.Count, 1).End(xlUp).Row
      Rows("30389:" & Dernierelign).Cut
      Workbooks.Add
      ActiveSheet.Paste
      Dim nom As String
      nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
      ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
      rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
      Classeur_Source.Activate
      End Sub


      EDIT : même si les activate et autres select sont à déconseiller...
    3. Hélas avec ce second programme, Excel ne m'enregistre pas le premier mais le second tableau...
    4. Modérateur
      @marcloarecOui! Mais...
      Tu sais enregistrer le classeur actif?
      Non?
      Et maintenant, après mon code, quel est le classeur actif?
    5. @pijakuJe vois bien ce que tu veux dire, mon but final visait à pouvoir couper la fin de mon tableau d'un classeur au suivant, puis de pouvoir dans la macro revenir au premier classeur, le sauvegarder puis le fermer pour me retrouver avec les données coupées dans le second classeur et pouvoir réitérer la macro jusqu'à la fin des valeurs.
      Je sais pas si je me fais bien comprendre, c'est possible que non :)