' /// Procédure commune et privée à ce module, utilisée pour filtrer tous les tableaux présent sur l'onglet actuel
' /// Les arguments sont le nom et le numéro de la forme ainsi que les paramètres du filtre
Private Sub Traitement_commun_switch_couleur_shp(ByVal nomShp As String, ByVal numShp As Integer, ByVal numField As Integer)
Dim nbrTab As Integer
Dim index As Integer
Dim index_ As Integer
Dim nbrIndex As Integer
Dim tabActuel As Integer
Dim tabFiltreSV() As String
' Comptage des tableaux présent sur l'onglet
nbrTab = ActiveSheet.ListObjects.Count
Application.ScreenUpdating = False
' On rentre dans la condition si le nombre de tableau est supérieur à 0
If nbrTab > 0 Then
If ActiveSheet.Shapes.Range(Array(nomShp)).Fill.ForeColor.RGB = RGB(255, 255, 255) Then
tabFiltreCouleur(numShp - 1) = ActiveSheet.Shapes.Range(Array(nomShp)).Line.ForeColor
indexTabFiltreCouleur = indexTabFiltreCouleur + 1
' Appel de la procédure pour le switch de couleur de la forme
Call Sub_switch_couleur_shp.Switch_couleur_forme_feuille_calcul(numShp, True)
Else
tabFiltreCouleur(numShp - 1) = ""
indexTabFiltreCouleur = indexTabFiltreCouleur - 1
' Appel de la procédure pour réinitialiser la couleur de la forme
Call Sub_switch_couleur_shp.Switch_couleur_forme_feuille_calcul(numShp, False)
End If
nbrIndex = Func_calcul.Calcul_nombre_index_non_vide_tab(6, tabFiltreCouleur())
ReDim tabFiltreSV(nbrIndex)
' On transfère le contenu du tableau tabFiltreCouleur dans le tabFiltreSV en excluant les lignes vides
index_ = 0
For index = 0 To 6
If Not tabFiltreCouleur(index) = "" Then
tabFiltreSV(index_) = tabFiltreCouleur(index)
index_ = index_ + 1
End If
Next index
' Boucle sur les tableaux de l'onglet afin de les filtrer selon les critères passés en arguments
For tabActuel = 1 To nbrTab
ActiveSheet.ListObjects(tabActuel).Range.AutoFilter Field:=numField, Criteria1:=tabFiltreSV(), Operator:=xlFilterValues
Next tabActuel
' Si nbrIndex est égal à 0, donc aucun bouton filtre n'est actif, on réinitialise les filtres sur les tableaux
If nbrIndex = 0 Then
For tabActuel = 1 To nbrTab
ActiveSheet.ListObjects(tabActuel).Range.AutoFilter
Next tabActuel
indexTabFiltreCouleur = 0
End If
End If
Application.ScreenUpdating = True
End Sub