Private Sub Worksheet_Change(ByVal Target As Range)
'code lancé si la cellule modifiée est la H9O
If Target.Address = "$H$90" And Target.Count = 1 Then
'Bloque le rafraichissement de l'écran
Application.ScreenUpdating = False
'Définition des variables
Dim lig As Long
'Efface les données temporaires colonnes B à F onglet TMP
Sheets("Tmp").Columns("B:G").ClearContents
'Travail sur l'onglet "Appelant" entre With et End With
With Sheets("Appelant")
'Calcul de la dernière ligne, Rows.count donne le nombre de lignes de la feuille
'cells(Rows.count,1) donne le nombre de lignes de la colonne 1
'End(xluop) remonte jusqu'à la dernière ligne remplie
'.row indique le numéro de cette ligne
lig = .Cells(Rows.Count, 1).End(xlUp).Row
End With
With Sheets("Tmp")
'Prépare un filtre élaboré, résultat renvoyé dans une feuille "TMP" qui a vocation à être masquée
Sheets("Appelant").Range("A1:E" & lig).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=.Range("A1:A2"), CopyToRange:=.Range("B1:F1"), Unique:=False
lig = .Cells(Rows.Count, 2).End(xlUp).Row
'Place le chiffre 1 dans le presse papier
.Cells(1, 7) = 1
.Cells(1, 7).Copy
'transforme les données en numérique
.Range("B2:B" & lig).PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False
'Popur chaque cellule de la plage
For Each c In .Range("B2:B" & lig)
'Si vide, remplacer par la valeur entière de la cellule du dessus
If c.Value = "" Then
c.Value = Int(c.Offset(-1, 0).Value * 1)
Else
'si non remplacer par la valeur entière
c.Value = Int(c.Value * 1)
End If
Next c
End With
With Sheets("Appelant")
'Met à jour le TCD
.PivotTables("TCD1").PivotCache.Refresh
End With
Application.ScreenUpdating = True
End If
End Sub