Private Sub Worksheet_Activate()
Dim d As Object, w As Worksheet, nlig&, i&, j&, v As Variant
Set d = CreateObject("Scripting.Dictionary")
'---listes des numéros et feuilles sans doublons---
For Each w In Worksheets
If w.Name <> Me.Name Then Set d(w.Range("B6").Value) = w 'mémorise la feuille
Next w
nlig = 6 'nombre de lignes des sous-tableaux
Application.ScreenUpdating = False
With [A1].CurrentRegion
For i = 2 To .Rows.Count
With .Cells(i, 1)
If .Value <> "" Then
Set w = d(.Value)
For j = 2 To nlig
v = Application.VLookup(Trim(.Cells(j, 12)), w.Columns("A:M"), 13, 0)
If IsError(v) Then .Cells(j, 14) = "" Else .Cells(j, 14) = v
Next j
End If
End With
Next i
End With
End Sub