Private Sub Worksheet_Activate()
Dim F As Worksheet, colsource, celdeb As Range, celfin As Range, dest As Range, titres, h&, col%
'---données sources---
Set F = Sheets("ExportCEGID")
Set celdeb = F.[A15]
Set celfin = F.Columns(1).Find("*", , xlValues, , , xlPrevious) 'dernière cellule non vide
colsource = Array(1, 4, 7, 9, 12, 14, 16, 19) 'colonnes à copier
F.Columns(1).Insert 'ajoute une colonne auxiliaire
F.Range(celdeb(1, 0), celfin(1, 0)) = "=Gras_Vide(RC[1])" 'fonction dans Module1
'---données destination---
Set dest = [B8]
titres = Array("Numéro de compte", "Fournisseur", "Solde du compte", "Solde non échu", "De 1 à 30 Jrs", "31-45 Jrs", "46-60 Jrs", "+61 Jrs", _
"Total échu", "%", "Total non échu", "%", "Contrôle solde du compte")
'---filtrage et copier-coller des valeurs---
Application.ScreenUpdating = False
dest.CurrentRegion.ClearContents 'RAZ
dest.Resize(, UBound(titres) + 1) = titres
On Error Resume Next 'si aucune SpecialCel
With F.Range(celdeb(1, 0), celfin(1, 0)).SpecialCells(xlCellTypeFormulas, 1) 'valeurs numériques (0)
h = .Count
For col = 0 To UBound(colsource)
.Offset(, colsource(col)).Copy
dest(2, col + 1).PasteSpecial xlPasteValues 'Collage spécial-Valeurs
Next col
End With
F.Columns(1).Delete 'supprime la colonne auxiliaire
'---formules---
dest(2, UBound(colsource) + 2).Resize(h) = "=SUM(RC[-4]:RC[-1])"
dest(2, UBound(colsource) + 3).Resize(h) = "=IFERROR(RC[-1]/RC[-7],"""")"
dest(2, UBound(colsource) + 4).Resize(h) = "=RC[-7]"
dest(2, UBound(colsource) + 5).Resize(h) = "=IFERROR(RC[-1]/RC[-9],"""")"
dest(2, UBound(colsource) + 6).Resize(h) = "=RC[-4]+RC[-2]"
Application.Goto [A1], True 'cadrage
End Sub