Sub MAJ_Somme()
Dim t, d As Object, i%, titre$
t = Timer
Set d = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With [Tableau1] 'tableau structuré
.AutoFilter: .AutoFilter 'ôte le filtrage automatique
.Rows.Hidden = False 'affiche toutes les lignes
.Columns(1).Hidden = False
For i = 2 To .Columns.Count
If .Columns(i).Hidden Then
d(i) = .Columns(i).Value
.Columns(i) = Empty 'efface les valeurs après les avoir mémorisées
titre = titre & "-" & Cells(1, i + .Column - 1).Address(0, 0)
End If
Next i
.Columns(1) = "=SUM(RC[2]:RC[" & .Columns.Count & "])"
.Columns(1) = .Columns(1).Value 'supprime les formules
For i = 2 To .Columns.Count
If d.exists(i) Then .Columns(i) = d(i) 'restitution
Next i
End With
titre = Mid(Replace(titre, 1, ""), 2)
titre = IIf(d.Count = 0, "Aucune colonne masquée", IIf(d.Count = 1, "1 colonne masquée ", d.Count & " oolonnes masquées ")) & titre
Application.ScreenUpdating = True
MsgBox "Mise à jour de la colonne Somme en " & Format(Timer - t, "0.00 \sec"), , titre
End Sub