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 :

Filtre sur couleur de police


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
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Par défaut Filtre sur couleur de police
    bonjour j'ai fait un code VBA pour filtrer un tableau sur plusieurs critère sur plusieurs colonnes et mon code est ci dessous et il marche bien. Mais dans une des colonnes ou je filtre j'ai en résultats des cases ou le texte est noir et d'autres ou le texte est rouge et je voudrais seulement les lignes ou dans cette case le texte est en noir

    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
    Sub liste_arn()
    ' Export Macro
     
     ActiveSheet.AutoFilterMode = False
     '' selection de la cellule de la condition du filtre
    Sheets("LISTE").Activate
    ' Filtre en LISTE, sur la colonne 4 et 8 , avec comme critère une formule en S2
    With Sheets("LISTE")
    Range("A9:I1000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("S1:S2"), Unique:=False
    'sélectionne et copie les cellules à coller
    Sheets("liste").Select
        Range("A10").Select
        dl = Range("A10").CurrentRegion.End(xlDown).Row
        Range(Selection, Selection.End(xlDown)).Select
        Range("A10:D" & dl).Select
            Selection.Copy
    End With
    End Sub

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonjour Amandon, bonjour le forum,

    Dans ton code tu utilises With (et un onglet) et ensuite tu ne mets pas le point qui indique que la plage est reliée à cet onglet. Puis tu refais référence à ce même onglet à l'intérieur du With ?!... J'aurais écris ton code comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub liste_arn()
    Dim DL As Integer
     
    With Worksheets("LISTE")
        .AutoFilterMode = False
        .Range("A9:I1000").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("S1:S2"), Unique:=False
        DL = .Range("A10").End(xlDown).Row
        DL.Range("A10:D" & DL).Copy
    End With
    End Sub
    Et, cerise sur la macro, je ne vois pas le rapport entre ton code et ta requête...

    La règle d'or en VBA, il te faut toujours éviter autant tu le peux les Select et autres Activate qui ne font que ralentir l'exécution du code et sont source de plantage !

  3. #3
    Membre confirmé
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Par défaut
    merci beaucoup je vais tester.

    en faite j'ai mon filtre avancé qui renvoi en criteriarange la formule suivant en S2 :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(SI(H10=serie;VRAI;FAUX);SOMMEPROD(ESTNUM(CHERCHE(liste;D10))*(liste<>""))>0)

    pour filtre suivant un chiffre (n°de série de travail) dans une colonne (H) et une liste de terme dans une colonne (D) sauf que dans cette colonne D j'ai des mots qui sont bien filtrer et certain sont écrit en rouge d'autre en noir et pour des raisons technique je souhaiterai aussi filtrer pour ne garde que les case écrite en noir.

    j'ai trouvé ce code la en auto filter mais je ne peux pas le compiler a l'autre ou autre solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A9").AutoFilter Field:=4, Operator:=xlFilterFontColor, Criteria1:=RGB(0, 0, 0), Operator:=xlAnd

  4. #4
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Re,

    Désolé Amandon, je passe la main... Trop nul en formules pour pouvoir t'aider...

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La méthode AdvancedFilter ne peut filtrer les couleurs sauf si tu passes par une fonction personnalisée et que tu utilises le critère calculé. C'est l'option que j'avais prise chez un de mes clients pour exporter toutes les lignes dont les cellules avaient une certaine couleur.

    Code de la fonction personnalisée IsSameColor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function IsSameColor(rng As Range, CodeRGB As Long, Optional CheckInterior As Boolean) As Boolean
      ' Arguments
      '   orng (Range)    Cellule concernée
      '   Code RGB        Code RGB à tester
      '   [CheckInterior] Si True vérifie la propriété Interior et sinon la propriété Font (défaut)
      With rng
       If CheckInterior Then IsSameColor = .Interior.Color = CodeRGB Else IsSameColor = .Font.Color = CodeRGB
     End With
    End Function
    et comme critère calculé écrire simplement (ne pas oublier le titre). 65535 est le code RGB pour le jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IsSameColor(E2;65535;VRAI)
    Attention la couleur générée par la mise ne forme conditionnelle ne fonctionne pas avec cette fonction car la propriété DisplayFormat ne fonctionne pas avec les fonctions personnalisées

    Le filtre simple (AutoFilter) tient compte des couleurs créées par la MFC
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Par défaut
    bonjour merci pour cette réponse mais je ne voit pas du tout comment l’intégrer dans mon code plus haut .

    et quelle code couleur pour le noir ?

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    je ne voit pas du tout comment l’intégrer dans mon code plus haut
    Il suffit d'ajouter une colonne dans la zone des critères avec le critère que j'ai édité dans ma précédente réponse et dans ton code tu modifies l'adresse de la zone de critères soit S1:T2
    Tu peux également conserver la même zone des critères mais alors tu dois ajouter le critère que j'ai édité dans le ET de ton critère calculé

    et quelle code couleur pour le noir ?
    Il suffit de faire un code VBA rapide dans la fenêtre d'exécution (Raccourci Ctrl + G) de VBE (Editeur VBA)
    Par exemple si la cellule A2 a sa police en noire, écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? Range("A2").Font.Color
    et tu verras le code s'afficher dans la fenêtre

    Pour en savoir plus sur les filtres avancés d'excel, à lire éventuellement Les filtres avancés ou élaborés dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

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

Discussions similaires

  1. Changer la couleur de police en cliquant sur une cellule
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 30/01/2010, 16h40
  2. filtre sur cellules en couleur
    Par NATOU2 dans le forum Excel
    Réponses: 3
    Dernier message: 26/02/2008, 07h55
  3. placer un filtre de couleur sur une image
    Par mm2405 dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 06/12/2007, 11h25
  4. Application de filtre de couleur sur une page web
    Par kalan dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 21/06/2006, 18h44
  5. Changement de couleur de police sur une partie d'un caption
    Par kobe dans le forum Composants VCL
    Réponses: 3
    Dernier message: 11/07/2005, 10h18

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