Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim w As Workbook, s As Worksheet, i%, a%
If Target.Column = 4 And Target.Row > 2 Then 'en cas de changement en colonne 4, ligne >=3
If Dir(Target.Value) <> "" Then 'si la valeur saisie correspond à un fichier existant
Set s = ActiveSheet 'objet feuille actuelle
Workbooks.Open (Target.Value) 'ouvrir classeur désigné
Set w = ActiveWorkbook 'objet classeur
'contrôle existance des 3 feuilles attendues
For i = 1 To w.Worksheets.Count
If w.Worksheets(i).Name = "client" Or _
w.Worksheets(i).Name = "soumission" Or _
w.Worksheets(i).Name = "installation" Then a = a + 1
If a = 3 Then Exit For 'inutile de pouruivre
Next i
If a < 3 Then
'feuilles attendues non toutes présentes
MsgBox "Classseur " & Target.Value & " non conforme"
Else
'écriture valeurs A2
s.Cells(Target.Row, 1) = w.Worksheets("client").Cells(2, 1)
s.Cells(Target.Row, 2) = w.Worksheets("soumission").Cells(2, 1)
s.Cells(Target.Row, 3) = w.Worksheets("installation").Cells(2, 1)
End If
w.Close 'fermeture classeur désigné
Else
'fichier inexistant à l'emplacement désigné
MsgBox "Fichier introuvable"
End If
End If
End Sub