Sub Traitement_TCD()
Dim Compteur As Integer, Seuil_NV As Byte, Nb_Col As Byte 'déclaration des variables
With Application
.ScreenUpdating = False 'désactivation de l'affichage pour le temps de traitement
.Calculation = xlCalculationManual 'désactivation du calcul automatique pour le temps de traitement
End With
On Error GoTo Gere_Erreurs 'routine de gestion des erreurs pour réactiver le calcul automatique si erreur
Seuil_NV = Feuil1.Range("N2").Value 'définition de la valeur de seuil
With Feuil1.PivotTables("Producteurs NC")
Nb_Col = .TableRange1.Columns.Count - 2 'définition du Nbr de colonne du tableau à analyser, nbr - colonnes de libellés et de total
For Compteur = .TableRange1.Row + .TableRange1.Rows.Count - 2 To .TableRange1.Row + 2 Step -1 'boucle sur les lignes du tableau
If Test_Vides(Feuil1.Range(Cells(Compteur, .TableRange1.Column).Address & ":" & Cells(Compteur, .TableRange1.Column + Nb_Col).Address).SpecialCells(xlCellTypeBlanks)) Then 'appel de la fonction test existence cellule vide
If Nb_Col - Feuil1.Range(Cells(Compteur, .TableRange1.Column).Address & ":" & Cells(Compteur, .TableRange1.Column + Nb_Col).Address).SpecialCells(xlCellTypeBlanks).Count < Seuil_NV Then 'teste le nbr de cellules pleines si < au seuil
.PivotFields("numéro").PivotItems(Feuil1.Cells(Compteur, .TableRange1.Column).Value).Visible = False 'sur test positif, désactive le numéro dans le TCD
End If
End If
Next Compteur
End With
Gere_Erreurs:
With Application
.ScreenUpdating = True 'activation de l'affichage
.Calculation = xlCalculationAutomatic 'activation du calcul automatique
End With
End Sub
Function Test_Vides(Plage_Test As Range)
Dim Nb_Temp As Integer
On Error GoTo Gere_Erreurs 'sur erreur, renvoie sur Gere_Erreurs
Nb_Temp = Plage_Test.Count 'compte les cellules vides parmi la ligne compteur du TCD, renvoie une erreur si aucune et sort de la function qui reste à false
Test_Vides = True 'si pas d'erreur, passe la Function Test_Vides à True
Gere_Erreurs:
End Function