VBA - selection d'onglets des n1ers onglets

Résolu
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. 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
    1. 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
  2. Re-,

    Que met-il comme message d'erreur?

    Ou alors, rien ne se passe?

    Peux-tu mettre le code entier que tu as mis?
    1. 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
  3. Bonjour,

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

    Set OtherWbk = Workbooks("Classeur1.xls") 


    Si oui, est-il ouvert?

    A te relire
    1. 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!
  4. 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?
    1. impeccable, ça marche top.
      merci, cousin hub!

      a te relire...