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 :

test multiple avec filtre couleur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Points : 22
    Points
    22
    Par défaut test multiple avec filtre couleur
    Bonjour,

    Voila j'ai réalisé un programme qui réalise un filtre selon plusieur couleurs de cellule,
    cependant il semble que le test multiple ne s'applique que sur la première solution proposée:

    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
    Sub Filtreparcouleur()
     
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
     
    Dim i
     
    For i = 11 To 1200
    If Not Cells(i, "L").Interior.ColorIndex = 8 Or Cells(i, "L").Interior.ColorIndex = 28 Or Cells(i, "L").Interior.ColorIndex = 33 Or Cells(i, "L").Interior.ColorIndex = 42 Then
    Rows(i).EntireRow.Hidden = True
    End If
    Next i
     
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
     
    End Sub
    Ici la seule seule couleur qui reste après le filtre est la "8", les autre sont cachées malgré le fait qu'elles soient énumérée dans les solution multiples.

    Merci beaucoup de m'aider à comprendre ce qui cloche dans mon programme!

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    bonjour,
    si je comprend tu veux cacher toutes les lignes sauf celles qui ont la couleur de fond dans le "If" ?

    je ferais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If Cells(i, "L").Interior.ColorIndex <> 8 Or Cells(i, "L").Interior.ColorIndex <> 28 Or Cells(i, "L").Interior.ColorIndex <> 33 Or Cells(i, "L").Interior.ColorIndex <> 42 Then
    'etc...

  3. #3
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Je crois que c'est plutôt des And dans l'expression de RV. Sinon l'expression est toujours VRAI

    PGZ

  4. #4
    Membre du Club Avatar de smacksime
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Points : 43
    Points
    43
    Par défaut
    Bonjour pgz,
    Une cellule ne peut pas avoir plusieurs couleur de fond, donc l'expression sera toujours Fausse. Donc c'est bien des Or, et je suis d'accord avec rvtoulon.
    Bien a vous,

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2011
    Messages : 28
    Points : 22
    Points
    22
    Par défaut Merci beaucoup
    La fonction fonctionne comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(i, "L").Interior.ColorIndex <> 34 And Cells(i, "L").Interior.ColorIndex <> 8 Then Rows(i).EntireRow.Hidden = True
    Quand je mets des "or", je me retrouve avec tout caché (pourtant c'est ce qui me semblait le plus logique également).

    Merci beaucoup RV et PGZ

  6. #6
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Re,

    Citation Envoyé par smacksime Voir le message
    Une cellule ne peut pas avoir plusieurs couleur de fond, donc l'expression sera toujours Fausse. Donc c'est bien des Or, et je suis d'accord avec rvtoulon.


    Si par exemple colorindex = 8, alors il sera <> 28, et donc l'expression du If renvoie VRAI si on met des OU. D'ailleurs quelque soit la valeur de colorindex, elle sera différente d'au moins 3 des valeurs testées, chaque "<>" renvoie VRAI et grâce au OU, l'expression est toujours VRAI. Ainsi on masque TOUTES les lignes, qq soit la couleur.

    Non, définitivement c'est ET. Et je pense que RV sera d'accord.

    Cordialement,

    PGZ

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 5
    Points
    5
    Par défaut
    bonsoir,

    si je me souviens de mes cours de logique,

    If ( Cells(i, "L").Interior.ColorIndex <> 34 AND Cells(i, "L").Interior.ColorIndex <> 8 )


    If NOT ( Cells(i, "L").Interior.ColorIndex = 34 OR Cells(i, "L").Interior.ColorIndex = 8 )

    c'est pareil , je pense que la formule initiale etait bonne , il manquait juste des parentheses.

Discussions similaires

  1. [XL-2010] Pb avec zones cibles multiples sur filtre élaboré
    Par alexandre.beaujault dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 01/05/2015, 06h22
  2. TCDs multiples avec plusieurs filtres sur une feuille
    Par zenparadox dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/02/2014, 15h58
  3. [XL-2013] Alternance de couleurs avec filtre auto
    Par alexis trotta dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/01/2014, 18h01
  4. filtre médian avec image couleur
    Par Marie_7 dans le forum Images
    Réponses: 3
    Dernier message: 28/05/2012, 22h55
  5. [A-02] Fonction OuvrirUnFichier avec filtre multiple
    Par mbasroger dans le forum VBA Access
    Réponses: 3
    Dernier message: 05/03/2009, 12h16

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