Private Sub Worksheet_Activate()
Dim c As Range, pSource As Range, pDestination As Range
Dim i As Integer, dTotal As Double
Application.ScreenUpdating = False
Set pSource = Sheets("LOCJD").Range("K27:K54")
Set pDestination = Sheets("ContratB").Range("pDestination") '1re cellule du tableau
'Note : "pDestination" est une cellule nommée dans l'onglet ContratB
i = 1
dTotal = 0
'Vider le tableau
pDestination.Offset(1, 0).Resize(10, 5).ClearContents '10 car 28 lignes dans LOCJD
pDestination.Offset(1, 0).Resize(10, 5).ClearFormats
'copie dans le 2e tableau
For Each c In pSource
If c.Value <> "" Then
pDestination.Offset(i, 0) = c.Offset(0, -10) 'Code produit
pDestination.Offset(i, 1) = c.Offset(0, -9) 'Nom du produit
pDestination.Offset(i, 3) = c.Offset(0, 0) 'Quantité
pDestination.Offset(i, 4) = c.Offset(0, -4) 'Valeur unitaire
pDestination.Offset(i, 5) = c.Offset(0, 1) 'Valeur totale
dTotal = dTotal + c.Offset(0, 1)
i = i + 1
End If
Next c
'Dernière colonne TOTAL
pDestination.Offset(i + 3, 0) = "Total"
pDestination.Offset(i + 3, 5) = dTotal
'Ajout bordures
' - copier les bordures
pDestination.Copy
pDestination.Offset(1, 0).Resize(i + 3, 6).PasteSpecial (xlPasteFormats)
Application.CutCopyMode = False
' -enlever bordures intérieures
With pDestination.Offset(1, 0).Resize(i + 2, 6)
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
'Format colonne E et F en montétaire
pDestination.Offset(1, 4).Resize(i + 3, 2).Style = "Currency"
pDestination.Activate
Application.ScreenUpdating = True
End Sub