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:
Ci-dessous, le code changeant la couleur du champ sélectionné
La condition: le premier champ dois se trouver en colonne "A"
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
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
Si je place un point d'arrêt
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
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:
J'ai crée un nouveau fichier vide. juste une liste de 5 lignes et 2 colonnes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3Application.Calculation = xlCalculationAutomatic Application.EnableEvents =True
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é
Partager