VBA - selection d'onglets des n1ers onglets

Résolu
pseudo_polo -  
 pseudo_polo -
Bonjour,

voici ma macro = je ne comprends pas pourquoi elle ne marche pas!!!

je veux juste selectionner tous les onglets actifs du premier au n-4 puis les copier dans un nouveau classeur!!

merci à vous tous!!

Sub Macro1()

n = Sheets.Count - 4
For i = 1 To n
Sheets(i).Select
ActiveWindow.SelectedSheets.Copy
Next i

End Sub

4 réponses

  1. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Bonjour,

    Essaie ainsi :

    Sub Macro1()
    Dim N As Byte, I As Byte
    Dim ThWbk As Workbook, OtherWbk As Workbook
    Application.ScreenUpdating = False
    Set ThWbk = ThisWorkbook
    Set OtherWbk = Workbooks("Classeur1.xls")
    N = Sheets.Count - 4
    For I = 1 To N
        ThWbk.Sheets(I).Copy After:=OtherWbk.Sheets(OtherWbk.Sheets.Count)
    Next I
    End Sub
    


    Le nom du classeur de destination à adapter (ici, classeur1.xls)

    Bonne journée
    0
    1. pseudo_polo
       
      merci beaucoup pour ton aide cher cousinhub! par contre, je viens d'essayer en copiant ton code et cela ne marche pas!!!??

      Bonne soirée
      0
  2. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Re-,

    Que met-il comme message d'erreur?

    Ou alors, rien ne se passe?

    Peux-tu mettre le code entier que tu as mis?
    0
    1. pseudo_polo
       
      yes: erreur = l'indice n'appartient pas à la selection - Erreur d'éxécution '9'
      le code que j'ai mis =

      Sub Macro1()
      Dim N As Byte, I As Byte
      Dim ThWbk As Workbook, OtherWbk As Workbook
      Application.ScreenUpdating = False
      Set ThWbk = ThisWorkbook
      Set OtherWbk = Workbooks("Classeur1.xls")
      N = Sheets.Count - 4
      For I = 1 To N
      ThWbk.Sheets(I).Copy After:=OtherWbk.Sheets(OtherWbk.Sheets.Count)
      Next I
      End Sub
      0
  3. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Bonjour,

    Es-tu sûr du nom de l'autre classeur?

    Set OtherWbk = Workbooks("Classeur1.xls") 


    Si oui, est-il ouvert?

    A te relire
    0
    1. pseudo_polo
       
      Hello!
      en fait, je souhaite recréer un autre classeur peu importe le nom (ensuite une autre macro l'enregistre et le mets directement sur un fichier) . donc, non, l'autre fichier n'est pas ouvert!

      a+ et merci pr ton aide!
      0
  4. cousinhub29 Messages postés 1113 Date d'inscription   Statut Membre Dernière intervention   383
     
    Re-,

    Et en prenant le problème par l'autre bout?

    Le principe, tu supprimes les 4 derniers onglets, tu enregistres sous un autre nom, ainsi ton fichier initial n'est pas modifié....

    Exemple :

    Sub macro()
    Dim NbFeuil As Integer, I As Integer
    NbFeuil = Sheets.Count
    Application.DisplayAlerts = False
    For I = NbFeuil To NbFeuil - 3 Step -1
        Sheets(I).Delete
    Next I
    ActiveWorkbook.SaveAs "classeur_x.xls"
    End Sub
    


    Peut-être?
    0
    1. pseudo_polo
       
      impeccable, ça marche top.
      merci, cousin hub!

      a te relire...
      0