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 :

Suppression Ligne si police rouge avec format mise en forme conditionnelle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 18
    Par défaut Suppression Ligne si police rouge avec format mise en forme conditionnelle
    Bonjour à tous,

    J'ai dans mes colonnes A / B et D une mise en forme conditionnelle. Pour A et B je recherche les doublons, et pour D je recherche la valeur 1. Dans chaque colonne j'applique la règle de format = Police rouge.

    Je souhaite ensuite supprimer automatiquement les lignes qui contiennent un caractère en police rouge dans une des colonnes. Pour cela j'ai la Macro suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Suppression_doublons()
    Dim MyRange As Range
    Dim L As Long
        Set MyRange = ActiveSheet.Range("A1").CurrentRegion
        For L = MyRange.Rows.Count To 1 Step -1
            If MyRange(L, 1).FormatConditions(1).Font.Color = 255 Then MyRange(L, 1).EntireRow.Delete
            If MyRange(L, 2).Font.Color = 255 Then MyRange(L, 2).EntireRow.Delete
            If MyRange(L, 4).Font.Color = 255 Then MyRange(L, 4).EntireRow.Delete
     
    Next
    End Sub
    Mon problème est que lors de l'application de la mise en forme conditionnelle, le format n'est pas le Font.Color = 255 il s'agit d'un format du type Selection.FormatConditions(1).Font
    .Color = 255
    Donc ma macro ne fonctionne pas, et je n'arrive pas à trouver comment supprimer ces lignes avec un format conditionnel.

    Auriez-vous une idée ?

    Merci d'avance de votre aide,

    Aurélien

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien bureau d'études
    Inscrit en
    Novembre 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien bureau d'études

    Informations forums :
    Inscription : Novembre 2015
    Messages : 118
    Par défaut
    Bonjour.

    Petite question, pourquoi ne pas directement utiliser une procédure de suppression de doublons ?
    Cela éviterait le double travail.

  3. #3
    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 le fil, bonjour le forum,

    En cas de mise en forme conditionnelle il ne faut pas cibler la couleur issue de la MFC mais sa condition.
    Si la cellule est rouge via une MFC du style : si A1>5 => couleur rouge (3) le code doit être If Range("A1") > 5 Then plutôt que If Range("A1").Interior.ColorIndex = 3 Then...

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Très clairement, en VBA, on ne peut pas faire un test sur le résultat (le format obtenu) d'une mise en forme conditionnelle.
    La question a été posée de nombreuses fois sur ce forum et la conclusion a chaque fois été la même.

    Range.FormatConditions(1).Font.Color indique la couleur si la condition est remplie mais le résultat sera le même en VBA que la condition dans la feuille soit remplie ou non.
    Range.Font.Color ne marche pas non plus puisque le format de la MFC ne modifie pas le format intrinsèque de la cellule qui demeure inchangé, quel que soit visuellement le résultat de la MFC.

    Très clairement, il n'y a pas de solution directe.
    Comme le dis Thautheme, le seul palliatif indirect est de reprendre la condition qui génère ce format.

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 18
    Par défaut
    Bonjour,

    Merci pour vos réponses.

    J'ai donc utilisé une autre méthode pour détecter les doublons.

    J'ai maintenant un autre blocage.
    Je souhaite supprimer la ligne si elle contient le mot VRAI

    J'ai la macro suivante qui fonctionne si le texte est en rouge, mais je n'arrive pas à modifier pour supprimer si le mot VRAI est présent.J'ai essayé avec .Value = "VRAI" mais cela ne fonctionne pas. Pouvez-vous m'aider ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Suppression_doublons()
    Dim MyRange As Range
    Dim L As Long
        Set MyRange = ActiveSheet.Range("A1").CurrentRegion
        For L = MyRange.Rows.Count To 1 Step -1
            If MyRange(L, 1).Value = "VRAI" Then MyRange(L, 1).EntireRow.Delete
            If MyRange(L, 2).Font.Color = 255 Then MyRange(L, 2).EntireRow.Delete
            If MyRange(L, 4).Font.Color = 255 Then MyRange(L, 4).EntireRow.Delete
    Next
    End Sub
    merci encore

    Aurélien

  6. #6
    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 le fil, bonjour le forum,

    Si les valeur "VRAI", "FAUX" sont renvoyées par des formules tu dois écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MyRange(L, 1).Value = True Then MyRange(L, 1).EntireRow.Delete
    ou tout simplement, car la valeur True est par défaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If MyRange(L, 1) Then MyRange(L, 1).EntireRow.Delete

Discussions similaires

  1. Suppression Ligne si police rouge
    Par apetitjean dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 10/06/2016, 21h35
  2. [PHPExcel] Perte du format Mise en forme conditionnel
    Par guigui69 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 14/02/2014, 10h40
  3. [AC-2007] Rafraichissement avec une mise en forme conditionnelle
    Par pio_killer dans le forum IHM
    Réponses: 2
    Dernier message: 25/10/2011, 10h34
  4. [XL-2007] fonction count avec une mise en forme conditionnelle
    Par tsrsi2006 dans le forum Excel
    Réponses: 4
    Dernier message: 27/08/2011, 15h38
  5. Cellules avec une mise en forme conditionnelle
    Par Peanut dans le forum Excel
    Réponses: 2
    Dernier message: 31/07/2008, 13h47

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