1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : janvier 2018
    Messages : 2
    Points : 1
    Points
    1

    Par défaut macro suppression de ligne en Fonction de couleur de cellule et vide

    Bonjour ,

    Étant un grand novice j'aurais besoin de votre aide.

    dans un tableau 5 colonnes avec entêtes.

    je voudrais enlever les lignes qui possèdent des cellules de couleur RGB(198, 179, 235) et non vides dans la 4 eme colonne

    Merci par avance

    Jacques

  2. #2
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    7 729
    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 : 7 729
    Points : 18 065
    Points
    18 065
    Billets dans le blog
    6

    Par défaut

    Bonjour,
    Tu crées une fonction personnalisée de type booléen te permettant de vérifier si la cellule testée contient la couleur voulue.
    Comme par exemple (même si je préfère seulement 2 arguments 1 pour la cellule et l'autre pour le code RGB)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function IsColorInterior(Cell As Range, RedCode As Byte, GreenCode As Byte, BlueCode As Byte) As Boolean
     IsColorInterior = Cell.Interior.Color = RGB(RedCode, GreenCode, BlueCode)
    End Function
    Tu crées une procédure pour supprimer les lignes répondant aux deux critères, l'un renvoyé par la fonction personnalisée IsColorInterior et l'autre testant si la cellule de la quatrième colonne est remplie.
    Personnellement, j'utilise la méthode AdvancedFilter pour faire cela

    Un exemple dans ce billet Supprimer des lignes suivant critères avec la méthode AdvancedFilter

    Pour comprendre le filtre avancé d'excel, je te conseille la lecture de ce tutoriel 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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    janvier 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : janvier 2018
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Bonjour Philippe
    Merci pour votre aide

    j'ai trouvé un code qui marche (enfin presque)
    il ne prends pas en compte mon critère "cellule vide"
    code ci-dessous si vous avez un instant Merci

    Sub Macro8()
    '
    ' Macro8 Macro
    '

    Dim ligne As Integer: Dim colonne As Integer
    Dim der_ligne As Integer

    ligne = 2: colonne = 3
    der_ligne = Cells.SpecialCells(xlCellTypeLastCell).Row

    While ligne < der_ligne

    If (Cells(ligne, colonne).Value = "" And Cells(ligne, colonne).Interior.Color = RGB(198, 179, 235)) Then

    Cells(ligne, colonne).EntireRow.Delete
    ligne = ligne - 1

    End If

    ligne = ligne + 1

    Wend

    End Sub








    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Tu crées une fonction personnalisée de type booléen te permettant de vérifier si la cellule testée contient la couleur voulue.
    Comme par exemple (même si je préfère seulement 2 arguments 1 pour la cellule et l'autre pour le code RGB)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function IsColorInterior(Cell As Range, RedCode As Byte, GreenCode As Byte, BlueCode As Byte) As Boolean
     IsColorInterior = Cell.Interior.Color = RGB(RedCode, GreenCode, BlueCode)
    End Function
    Tu crées une procédure pour supprimer les lignes répondant aux deux critères, l'un renvoyé par la fonction personnalisée IsColorInterior et l'autre testant si la cellule de la quatrième colonne est remplie.
    Personnellement, j'utilise la méthode AdvancedFilter pour faire cela

    Un exemple dans ce billet Supprimer des lignes suivant critères avec la méthode AdvancedFilter

    Pour comprendre le filtre avancé d'excel, je te conseille la lecture de ce tutoriel Les filtres avancés ou élaborés dans Excel

  4. #4
    Rédacteur

    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    janvier 2010
    Messages
    7 729
    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 : 7 729
    Points : 18 065
    Points
    18 065
    Billets dans le blog
    6

    Par défaut

    Bonjour,
    Il faudrait placer ton code entre les balises (dans l'éditeur le bouton #) prévue à cet effet
    Je ne vois pas de problème dans le test cependant il y a me semble t'il une incohérence dans le code. Une ligne de code fait une soustraction (ligne = ligne - 1) et plus loin une addition

    De plus dans ta demande initiale
    je voudrais enlever les lignes qui possèdent des cellules de couleur RGB(198, 179, 235) et non vides dans la 4 eme colonne
    et maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    il ne prends pas en compte mon critère "cellule vide"
    Il faudrait savoir
    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
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

Discussions similaires

  1. Macro Excel: Masquer ligne en fonction
    Par henrynv dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2012, 18h38
  2. [XL-2007] Copie de ligne en fonction de couleur de cellule dans d'autre feuille
    Par stephadm dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 30/09/2011, 08h43
  3. [XL-2000] Adapter une macro (suppression de ligne si = 0)
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/03/2010, 22h53
  4. Macro suppression de ligne
    Par malabarbe dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/06/2008, 16h21
  5. Suppression de ligne en fonction d'une colonne
    Par PPLILH2008 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 23/06/2008, 11h43

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