Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

déplacement d'onglets

niconiz

XLDnaute Nouveau
Bonjour et meilleurs voeux,

ayant des connaissances VBA "limitées" je tiens à vous exposer mon problème.

Je souhaite déplacer des onglets d'un classeur excel dans un autre (idéalement via une macro ).

Ces onglets se situent entre un onglet nommé "début" et un autre "fin" (exemple joint)

je souhaite les copier et coller dans un autre classeur, et je sèche.

Pourriez-vous m'aider ?

cordialement
 

Pièces jointes

  • Classeur2.xls
    23.5 KB · Affichages: 32
  • Classeur2.xls
    23.5 KB · Affichages: 25

gilbert_RGI

XLDnaute Barbatruc
Re : déplacement d'onglets

Bonjour , bienvenue sur XLD, Bonne année 2016


sans plus d'explications sur la destination et le numéro ou le nom de la page à déplacer

voilà une idée
à mettre dans un module standard

VB:
Sub test()
    Sheets("test1").Select
    Cells.Select
    Selection.Copy
    Workbooks.Add
    ActiveSheet.Paste
End Sub
 
Dernière édition:

niconiz

XLDnaute Nouveau
Re : déplacement d'onglets

Merci Gilbert,

dans l'idée je dois déplacer non pas uniquement test1, mais toutes les feuilles (et leur contenu) qui se trouvent entre début et fin. Et c'est là où je sèche...
 

gilbert_RGI

XLDnaute Barbatruc
Re : déplacement d'onglets

sheets.count indique le nombre de feuilles dans le classeur
alors
faire une boucle for par exemple qui commence de 1 à sheets.count
ensuite dans cette boucle mettre un if le nom de la feuille est "debut" ou si "fin" ne rien faire sinon executer la macro avec le nom des feuilles rencontrées dans la boucle
 

gilbert_RGI

XLDnaute Barbatruc
Re : déplacement d'onglets

ce qui pourrait donner un truc dans le genre pour le classeur fourni

VB:
Sub test()
    Dim Wb As Workbook
    Dim Wbr As Workbook
    chemin = ThisWorkbook.Path
    Set Wb = Workbooks("classeur2.xls")
    Set Wbr = Workbooks.Add
    Wbr.SaveAs Filename:=chemin & "\Destination" & ".xls"
    With Wb
        For sh = 1 To Wb.Sheets.Count
            If Wb.Sheets(sh).Name = "Début" Then GoTo suite
            If Wb.Sheets(sh).Name = "Fin" Then
            GoTo suite
            Else
                Wb.Activate
                Wb.Sheets(sh).Select
                Debug.Print Wb.Sheets(sh).Name
                Wb.Sheets(sh).Cells.Select
                Selection.Copy
                Wbr.Sheets.Add
                Wbr.ActiveSheet.Paste
suite:
            End If
        Next
    End With
    Wbr.Close
End Sub
 

Discussions similaires

Réponses
7
Affichages
577
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…