Bonjour à tous,

Depuis aujourd'hui, pour une raison inconnue, l'évènement "Calculate" à décider de ne plus fonctionner.

J'explique:

Soit une liste de données où le filtre est appliqué. Pas énorme ... 400 lignes sur 15 colonnes.

J'ai crée une procédure permettant de coloriser le titre de chaque colonne que j'ai choisi pour fournir une condition de recherche.
C'est très facile, à ce moment, de connaitre les champs pour laquelle les données sont filtrées!

Cela à fonctionné jusqu' a ce début d'après-midi.

L'évènement "Calculate" ne réagit plus et je ne sais pas pourquoi !

par contre, si j'exécute le code en pas à pas (F8) ... tout fonctionne.
Où est l'erreur?

Voici une exemple avec un petit dessin. C'est plus facile à comprendre

Tous les noms et prénoms écris ci-dessous sont fictifs et fournis comme simple exemple:

Nom : Filtre 1.jpg
Affichages : 98
Taille : 133,5 Ko

Ci-dessous, le code changeant la couleur du champ sélectionné
La condition: le premier champ dois se trouver en colonne "A"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
Sub AppliqueCouleur_ColonneFiltree(ws As Worksheet, titre As Integer)
    '   ws  : la feuille a traiter
    ' titre : n° de ligne ou se trouve le titre
    ' -----------------------------------------
 
    Dim ClFltr As Integer, qtCol As Integer
    Dim zone As String
 
    If titre > 0 Then
 
        qtCol = ws.AutoFilter.Filters.Count                     ' Nombre de colonne du filtre auto.
        zone = "A" & titre & ":" & ColumnLetter(qtCol) & titre  ' plage des titres du filtre
        ws.Range(zone).Interior.ColorIndex = xlNone             ' Retire les anciennes couleurs
 
        If ws.FilterMode = True Then
 
            zone = "A" & titre & ":" & ColumnLetter(qtCol) & titre
 
            For ClFltr = 1 To qtCol
 
                'Colorie la colonne en jaune si le filtre est actif
 
                If ws.AutoFilter.Filters.Item(ClFltr).On Then
                    ws.Cells(titre, ClFltr).Interior.ColorIndex = 6
                End If
            Next ClFltr
        End If
    End If
End Sub
Dans l'évènement "Calculate" de la page, j'ai mis le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Private Sub Worksheet_Calculate()
    Call AppliqueCouleur_ColonneFiltree(ActiveSheet, 1)    ' Le 1 est le n° de ligne du titre
End Sub
Si je place un point d'arrêt

Nom : Filtre 2.jpg
Affichages : 90
Taille : 22,0 Ko
Le VBA ne s'y arrête pas je dirais même qu'il n'y passe pas du tout !

Comme si l'évènement ne se produit pas

Ce que j'ai ajouté sur l'ouverture du document:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Application.Calculation = xlCalculationAutomatic 
Application.EnableEvents =True
J'ai crée un nouveau fichier vide. juste une liste de 5 lignes et 2 colonnes.
Appliquer le filtre et placer un msgbox dans l'évènement "Calculate"

Je filtre et rien ne se passe !

Au secours !

Quel autre évènement je pourrais utiliser ?
Car "on change" et "change" ... rien ... aucune réaction !

Merci d'avance de votre aide
André