IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Quel évènement à utliser lors d'une sélection d'une liste filtrée [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 226
    Par défaut Quel évènement à utliser lors d'une sélection d'une liste filtrée
    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é

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Salut,

    S'il n'y a aucune formule en jeux, l'évènement Calculate ne se déclenche pas (et c'est logique).
    Tu peux cacher quelque part dans ta feuille une formule bidon (un truc aussi simple que "=A2" ou =Tableau1[@Nom]),
    et Grand Magie ! L'évènement Calculate se déclenche.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 226
    Par défaut Cela fonctionne
    YEAAAhhhh !

    T'es le king !
    Mais, pas la bonne formule.
    Avec votre formule, cela fonctionne uniquement quand vous l'écrivez ! après ... plus rien

    Il faut mettre : "=NOW()"

    C'est la date + l'heure
    Vu que le temps ne s'arrête pas !...

    T'es génial. Merci pour ton aide !

    André

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Quels logiciels de modélisation pour une base de données ?
    Par octopus dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 11/06/2023, 16h20
  2. Réponses: 0
    Dernier message: 13/05/2010, 21h50
  3. Quel est l'impact lors d'une montée de version MySQL
    Par fgalves dans le forum Administration
    Réponses: 1
    Dernier message: 28/11/2008, 11h41
  4. Quel objet utiliser pour afficher une liste de plusieurs résultats
    Par jlachapelle dans le forum Windows Forms
    Réponses: 1
    Dernier message: 15/08/2008, 20h33
  5. Réponses: 9
    Dernier message: 16/05/2007, 19h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo