Private WithEvents CMB As CommandBars
Private Sub Cmb_OnUpdate()
'ActiveSheet.Calculate 'si tu veux garder ta formule
'sinon tu fait simplement
'pour la colonne H de la feuille L1
[ 'Lignes et arrêts'!B11] = CompterCouleur(Feuil2.[H7:H300], Feuil2.[I1])
[ 'Lignes et arrêts'!B13] = CompterCouleur(Feuil2.[T7:T300], Feuil2.[I1])
'pour la colonne H de la feuille L2
[ 'Lignes et arrêts'!I11] = CompterCouleur(Feuil3.[H7:H300], Feuil3.[I1])
[ 'Lignes et arrêts'!I13] = CompterCouleur(Feuil3.[T7:T300], Feuil3.[I1])
[ 'Lignes et arrêts'!I15] = CompterCouleur(Feuil3.[AF7:AF300], Feuil3.[I1])
'pour la colonne H de la feuille L3
[ 'Lignes et arrêts'!B20] = CompterCouleur(Feuil4.[H7:H300], Feuil4.[I1])
[ 'Lignes et arrêts'!B22] = CompterCouleur(Feuil4.[T7:T300], Feuil4.[I1])
End Sub
Private Sub Workbook_Open()
Set CMB = Application.CommandBars
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If " L1 L2 L3 " Like "* " & Sh.Name & " *" Then
Set CMB = Application.CommandBars
Else
Set CMB = Nothing
End If
End Sub
Function CompterCouleur(PlageCouleur As Range, Couleur As Range)
Application.Volatile
Dim CodeCouleur As Integer
Dim NbrCouleur As Integer
CodeCouleur = Couleur.Interior.ColorIndex
CodeCouleur = Couleur.DisplayFormat.Interior.ColorIndex
Set CCell = PlageCouleur
For Each CCell In PlageCouleur
If CCell.Interior.ColorIndex = CodeCouleur Or _
CCell = Couleur.DisplayFormat.Interior.ColorIndex = CodeCouleur Then
NbrCouleur = NbrCouleur + 1
End If
Next CCell
CompterCouleur = NbrCouleur
End Function