Classeur précédent

marcloarec Messages postés 16 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Salut,

    En toute fin de macro :
    ThisWorkbook.Close True

    0
    1. marcloarec Messages postés 16 Statut Membre
       
      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?
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > marcloarec Messages postés 16 Statut Membre
       
      Tu 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...
      0
    3. marcloarec Messages postés 16 Statut Membre
       
      Hélas avec ce second programme, Excel ne m'enregistre pas le premier mais le second tableau...
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > marcloarec Messages postés 16 Statut Membre
       
      Oui! Mais...
      Tu sais enregistrer le classeur actif?
      Non?
      Et maintenant, après mon code, quel est le classeur actif?
      0
    5. marcloarec Messages postés 16 Statut Membre > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Je 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 :)
      0