Sub UpdateDataBis()
Dim Ld As Long, Lf As Long, C As Integer
Dim Wb As Workbook, Fichier As String
Fichier = Application.GetOpenFilename
If Fichier = "" Then Exit Sub
Set Wb = Workbooks.Open(Fichier)
Application.ScreenUpdating = False
With Wb.ActiveSheet
Ld = .Cells.Find("PDS").Row
Col = .Cells(Ld, 256).End(xlToLeft).Column
Lf = .Cells(65536, 1).End(xlUp).Row
Tbl = .Range(.Cells(Ld, 1), .Cells(Lf, Col))
End With
Wb.Close savechanges = False
With ThisWorkbook.ActiveSheet
Li = .Cells(65536, 1).End(xlUp).Row ' + 1
Col = .Cells(4, 256).End(xlToLeft).Column
For C = 1 To UBound(Tbl, 2)
Set cel = .Rows(4).Find(Tbl(1, C))
If Not cel Is Nothing Then
For L = 2 To UBound(Tbl, 1)
.Cells(Li + L - 1, cel.Column) = Tbl(L, C)
If Tbl(L, C) = "" Then .Cells(Li + L - 1, cel.Column) = 0
Next
Else
Col = Col + 1
If Col > UBound(Tbl, 2) Then Exit For
.Cells(4, Col) = Tbl(1, C)
For L = 5 To Li
.Cells(L, Col) = 0
Next
For L = 2 To UBound(Tbl, 1)
.Cells(Li + L - 1, Col) = Tbl(L, C)
If Tbl(L, C) = "" Then .Cells(Li + L - 1, Col) = 0
Next
End If
Next
If Col > UBound(Tbl, 2) Then
Lf = .Cells(65536, 1).End(xlUp).Row
For C = UBound(Tbl, 2) + 1 To Col
For L = Li + 1 To Lf
.Cells(L, C) = 0
Next
Next
End If
End With