Bonjour Bernard, Jean, Corinne, le Forum
Si j'ai bien compris ce que Jean souhaite ce devrait correspondre à ce Code ...
Option Explicit
Sub FactureQuantite1()
Dim WBSource As Workbook
Dim WBCible As Workbook
Dim WS As Worksheet
Dim WSname As String
Dim ThePlage As Range
Set WBSource = Workbooks("facturation cartierville.xls")
Set WBCible = Workbooks("compilation mensuelle.xls")
For Each WS In WBSource.Worksheets
WSname = WS.Name
Set ThePlage = WS.Range("B5:B69")
On Error GoTo ErrorHandler
With WBCible.Sheets(WSname)
ThePlage.Copy .Cells(3, .Range("IV3").End(xlToLeft).Column + 1)
End With
Next
Exit Sub
ErrorHandler:
If Err = 9 Then
MsgBox "La Feuille " & WSname & " n'existe pas dans le classeur " & WBCible.Name, vbCritical, "Arrêt Critique Procédure"
Else
MsgBox "Erreur Non Gérée " & Err.Number & " " & Err.Description
End If
End Sub
Cette produrer va Scanner Toutes les feuilles du Classeur Source ("facturation cartierville.xls") qui devient ici un Objet WorkBook "WBSource"...
On peut éviter de scanner certaines feuilles en ajoutant une condition If :
For Each WS In WBSource.Worksheets
If WS.Name <> "LaFeuilleAnePasCopier" Then
...
...
...
End If
Next
Pour le reste, il faut impérativement que toutes les feuilles à recopier du WBSource existe dans le Classeur "compilation mensuelle.xls" qui est donc l'Objet WBCible... Sinon je gère l'erreur, mais la difficulté est de reprendre la macro pour la suite... Il faudrai en fait faire un premier passage pour comparer toutes les Feuilles Cible des Feuilles Source, ce qui allongerait d'autant vu que l'on parle de 150 feuilles de chaque coté... (Mais celà reste dans le domaine du possible of course en créant la feuille manquante à la volée... Voir si besoin...)
Enfin voilà déjà pour une première approche
Bonne Soirée
@+Thierry