Sub Copier_les_saisies()
Dim WS As Worksheet, Cible As Workbook, Source As Workbook
Set Cible = Application.Workbooks.Open("...")
Set Source = Application.Workbooks.Open("...")
Application.ScreenUpdating = False
For Each WS In Source.Worksheets
If SheetExists(WS.Name, Cible) Then
WS.Range(WS.Cells(2, 1), WS.Cells(Rows.Count, 3).End(xlUp)).Copy Cible.Worksheets(WS.Name).Cells(Rows.Count, 1).End(3)(2)
Application.CutCopyMode = False
Else
Cible.Sheets("Modèle").Visible = True
Cible.Sheets("Modèle").Copy after:=Cible.Sheets(Cible.Sheets.Count)
Cible.Sheets("Modèle (2)").Name = WS.Name
Cible.Sheets("Modèle").Move after:=Cible.Sheets(Cible.Sheets.Count - 1)
Cible.Sheets("Modèle").Visible = False
WS.Range(WS.Cells(2, 1), WS.Cells(Rows.Count, 3).End(xlUp)).Copy Cible.Worksheets(WS.Name).Cells(Rows.Count, 1).End(3)(2)
Application.CutCopyMode = False
End If
Next WS
Call Trier_les_feuilles
Application.DisplayAlerts = False
Cible.Close True
Source.Close False
End Sub
Sub Trier_les_feuilles()
'
Dim i As Integer
Dim j As Integer
For i = 1 To Sheets.Count
For j = 1 To Sheets.Count - 1
If UCase$(Sheets(j).Name) > UCase$(Sheets(j + 1).Name) Then _
Sheets(j).Move after:=Sheets(j + 1)
Next j
Next i
End Sub
Function SheetExists(shtName As String, Optional wb As Workbook) As Boolean
Dim sht As Worksheet
If wb Is Nothing Then Set wb = Source
On Error Resume Next
Set sht = wb.Sheets(shtName)
On Error GoTo 0
SheetExists = Not sht Is Nothing
End Function