Bonjour Jan, le Forum
Il y aurait plusieurs approches possibles pour faire ce que tu désires, voici déjà la plus simple à interprétrer à mon sens :
Il est entendu que tu as bien les classeurs existants dans les répertoires indiqué dans le réseau sur "I".... Il est aussi subordonné que tu corriges les colonnes "C" & "L" car il faut le dernier Anti-Slash pour le Path (I:\Jan\Resultats\ et pas I:\Jan\Resultats tout court)
Sinon ce code devrait tourner sans trop de souci vu que j'essaie aussi de gérer l'erreur en indiquant le mot erreur dans la ligne concernée sur la feuille au cas où l'un des deux fichiers n'existe pas... (ou les deux)...
Dim Cell As Range 'Variable Public en Top de Module
Sub TheParametersRecorder()
Dim WS As Worksheet
Dim Plage As Range
Dim SourcePath As String
Dim SourceFile As String
Dim SourceSheet As String
Dim SourceRange As String
Dim TargetPath As String
Dim TargetFile As String
Dim TargetSheet As String
Dim TargetRange As String
Set WS = ThisWorkbook.Sheets("Parameters")
Set Plage = WS.Range("C8:C26")
For Each Cell In Plage
If Cell <> "" Then
SourcePath = Cell
SourceFile = Cell.Offset(0, 2)
SourceSheet = Cell.Offset(0, 4)
SourceRange = Cell.Offset(0, 6)
TargetPath = Cell.Offset(0, 9)
TargetFile = Cell.Offset(0, 11)
TargetSheet = Cell.Offset(0, 13)
TargetRange = Cell.Offset(0, 15)
TheReporter SourcePath, SourceFile, SourceSheet, SourceRange, _
TargetPath, TargetFile, TargetSheet, TargetRange
End If
Next Cell
End Sub
Sub TheReporter(SP$, SF$, SS$, SR, TP$, TF$, TS$, TR$)
Dim TheArray As Variant
On Error GoTo Out1:
Workbooks.Open SP & SF
TheArray = ActiveWorkbook.Sheets(SS).Range(SR)
ActiveWorkbook.Close False
On Error GoTo Out2:
Workbooks.Open TP & TF
ActiveWorkbook.Sheets(TS).Range(TR) = TheArray
ActiveWorkbook.Close True
Exit Sub
Out1:
MsgBox "le Classeur Source " & SF & " est introuvable dans " & SP
Cell.Offset(0, -1) = "Erreur"
Exit Sub
Out2:
MsgBox "le Classeur Cible " & TF & " est introuvable dans " & TP
Cell.Offset(0, -1) = "Erreur"
End Sub
Bon Appétit