Supprimer des lignes en fonction de la couleur d'une cellule

Bonsoir,

J'ai dans la colonne A (tableau15[COMMANDE]), des cellules qui deviennent rouge du à une mise en forme conditionnelle si elle comporte une certain texte.

Une fois que les cellules deviennent rouges je voudrais que la ligne sur laquelle elle se trouve soit automatiquement supprimé car sinon risque à y passer mes nuits (environ 6000 lignes.....)

Malheureusement ce fichier est un fichier du boulot et je ne peux donc pas vous le transmettre mais vous avez je pense toutes les informations nécessaires.

Merci d'avance.

Slt,

une macro pour supprimer les lignes rouges ( de la colonne A)

Sub supprimer_ligne_rouge ()
Dim i As Long
For i = 1 To Rows.Count
    If Cells(i, 1).Interior.ColorIndex = 3
        Rows(i).Delete
Next i
End If
End Sub

pour l'automatiser il faut passer par une Private Sub Worksheet_Change ....

Bonne chance

Bonjour m3ellem1,

Merci pour ta réponse,

Je vais essayer dans la journée, mais ce n'est pas trop grave si il n'est pas automatique je n'aurais qu'à revenir vers le forum quand le fichier sera partagé à d'autre membre de mon équipe.

Après insertion, la macro ne fonctionne pas : "Erreur de compilation".

Sorry ma faute

Sub supprimer_ligne_rouge ()
Dim i As Long
For i = 1 To Rows.Count
    If Cells(i, 1).Interior.ColorIndex = 3
        Rows(i).Delete
 End If
Next i
End Sub 

Toujours la même erreur, il faut l'insérer dans le module ou dans la feuille ?

J'ai tout de même essayer l'un ou l'autre et rien ne fonctionne

Dans les deux cas la ligne : If Cells(i, 1).Interior.ColorIndex = 3 devient rouge à partir du moment ou je la copie.

t'as un fichier pour voir?

Malheureusement non c'est un fichier du travail j'ai accès à la modification mais pas au partage

Malheureusement non c'est un fichier du travail j'ai accès à la modification mais pas au partage

oui je comprend! mais tu peux quand même créer un fichier proche de la réalité non?

Bonjour le fil,

Vous avez oublié le Then après 3.....

Pour supprimer des lignes, on commence pars le bas....For i = dl To 1 Step -1

Sub supprimer_ligne_rouge()

 Dim i As Long, dl As Long

 dl = Range("A" & Rows.Count).End(xlUp).Row

For i = dl To 1 Step -1
    If Cells(i, 1).Interior.ColorIndex = 3 Then
        Rows(i).Delete
 End If
Next i
End Sub

Cordialement,

Bien vu xorsankukai

La formule ne fonctionne toujours pas, cette fois il ne se passe rien quand je clique.

Je vous joint le type de fichier qui peux correspondre à ma demande.

Merci encore pour l'aide

84exemple.xlsx (11.14 Ko)

Re,

Ton fichier modifié:...............CTRL + e pour lancer la macro

231exemple.xlsm (15.18 Ko)

Cordialement,

Merci pour ta réponse xorsankukai,

La macro fonctionne sur le fichier exemple, mais sur le mien après avoir changé le numéro de feuille et de colonne le message d'erreur suivant apparait à l'exécution :

"Microsoft Visual Basic pour application

L'indice n'appartient pas à la selection"

Re,

Pas d'erreur au niveau de l'onglet (majuscule, espace en trop) ?

La couleur rouge est issue d'une MFC ? Si oui, quelle est la condition ?

Bonjour,

Une MFC ne modifie pas réellement la couleur d'une cellule, comme le ferait un utilisateur. La détection de la couleur de remplissage est donc inefficace telle qu'elle est écrite dans la macro proposée.

Il serait plus simple d'appliquer la même condition que la MFC pour déterminer les lignes concernées, puis les supprimer du fichier.

La condition est une détection de texte, il y a plusieurs texte à détecter

Re,

Si tu ne peux pas joindre ton fichier, peut-être peux-tu poster un fichier exemple représentatif avec ta MFC ?

Où à défaut, donne la formule de la MFC.

Cordialement,

Je ne peux envoyer que l'une des conditions car les autres possède un texte avec des données que je ne peux pas diffusé (confidentielle)

45exemple-2.xlsm (15.26 Ko)

Re,

A tester:

Sub supprime()
 Dim i As Long, dl As Long
    dl = Range("A" & Rows.Count).End(xlUp).Row

    C = Array("OUZBEKISTAN")
 For j = LBound(C, 1) To UBound(C, 1)
  For i = dl To 1 Step -1
   If Sheets("Feuil1").Range("A" & i) Like C(j) Then Rows(i).Delete
  Next i
 Next j
End Sub
33exemple3.xlsm (17.09 Ko)

Si tu veux rajouter une condition, tu rajoutes une virgule et ta condition après "OUZBEKISTAN"

exemple: C = Array("OUZBEKISTAN","France")

Cordialement,

Rechercher des sujets similaires à "supprimer lignes fonction couleur"