Option Explicit
Sub test()
Dim a, w(), n As Long, i As Long, j As Long
Dim dico As Object, ws As Worksheet
Set dico = CreateObject("Scripting.Dictionary")
dico.CompareMode = 1
For Each ws In Worksheets([{"Général","Contact","Tarifs de base"}])
a = ws.Range("a1").CurrentRegion.Value
For i = 2 To UBound(a, 1)
If Not dico.exists(CStr(a(i, 1))) Then
ReDim w(1 To 16)
Else
w = dico(CStr(a(i, 1)))
End If
Select Case ws.Name
Case "Général"
For j = 1 To UBound(a, 2)
w(j) = a(i, j)
Next
Case "Contact"
w(1) = a(i, 1): w(3) = a(i, 2)
For j = 3 To UBound(a, 2)
w(j + 9) = a(i, j)
Next
Case "Tarifs de base"
w(1) = a(i, 1): w(3) = a(i, 2)
w(UBound(w, 1)) = a(i, 3)
End Select
dico(CStr(a(i, 1))) = w
Next
Next
Application.ScreenUpdating = False
With Sheets("base clients complete").Range("a1").CurrentRegion
.Offset(1).ClearContents
n = 1
For i = 0 To dico.Count - 1
With .Offset(n).Resize(1, UBound(dico.items()(i), 1))
.Value = dico.items()(i)
End With
n = n + 1
Next
End With
Set dico = Nothing
Application.ScreenUpdating = True
End Sub