Copier onglet dans un fichier aléatoire

JANO

XLDnaute Occasionnel
Bonsoir le forum,

La macro copie un onglet dans le classeur test, mais j'aurais besoin qui copie l'onglet dans le classeur ouvert quelque soit son nom.

Est-ce que c'est possible ?

merci de votre aide

Sub copie_base()

Windows("Macros.xls").Visible = True
Sheets("base").Select
Sheets("base").Copy Before:=Workbooks("Test.xls").Sheets(1)
Windows("Macros.xls").Visible = Fasle

End Sub
 

Fred0o

XLDnaute Barbatruc
Re : Copier onglet dans un fichier aléatoire

Bonsoir JANO,

Tu peux essayer ceci (non testé) :
VB:
Sub copie_base()
    Windows("Macros.xls").Visible = True
    Sheets("base").Select
    Sheets("base").Copy Before:=Sheets(1)
    Windows("Macros.xls").Visible = Fasle
End Sub

A+
 

Fred0o

XLDnaute Barbatruc
Re : Copier onglet dans un fichier aléatoire

Re-bonsoir,

Correction apportée grâce à la réponse que tu as apporté à la question de Staple. C'est ça le travail d'équipe.
VB:
Sub copie_base()
    Dim nf
    Windows("Macros.xls").Visible = True
    ActiveWindow.ActivateNext
    nf = ActiveWorkbook.Name
    ActiveWindow.ActivateNext
    ActiveWorkbook.Sheets("base").Copy Before:=Workbooks(nf).Sheets(1)
    Windows("Macros.xls").Visible = False
End Sub

A+

Edit : BING. Salut Staple
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier onglet dans un fichier aléatoire

Re


Cela fonctionne chez moi (avec 2 classeurs ouverts)
Code:
Sub a()
Dim wbk As Workbook
For Each wbk In Workbooks
If wbk.Name <> ThisWorkbook.Name Then
ThisWorkbook.Sheets(1).Copy after:=wbk.Sheets(wbk.Sheets.Count)
End If
Next wbk
End Sub

EDITION: Bing, houps désolé, salut FreDOo
 

Staple1600

XLDnaute Barbatruc
Re : Copier onglet dans un fichier aléatoire

Re


Une variante plus secure et sans boucle
Code:
Sub b()
Dim check As Boolean
check = Workbooks.Count = 2
If check Then
Workbooks(1).Sheets(1).Copy after:=Workbooks(2).Sheets(Workbooks(2).Sheets.Count)
End If
Workbooks(1).Sheets(1).Activate
End Sub

Et pour le fun, avec des endives (mais sans jambon ni gruyère ;) )
Code:
Sub c()
Dim check As Boolean: check = Workbooks.Count = 2
With Workbooks(check * -1)
    With .Sheets(1)
        .Copy after:=Workbooks(2).Sheets(Workbooks(2).Sheets.Count)
        .Activate
    End With
End With
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 324
Membres
103 179
dernier inscrit
BERSEB50