Supprimer des cellules à fond vert sur excel
Résolu
balata9
-
pilas31 Messages postés 1878 Statut Contributeur -
pilas31 Messages postés 1878 Statut Contributeur -
Bonjour tout le monde,
Je souhaite, avec une macro associée à un bouton, supprimer les cellules dont le fond est vert pomme (code 4).
La plage de cellule sur laquelle doit s'appliquer la macro est $F$5:$L$20.
J'ai trouvé un code sur un forum, cependant il supprime toute la ligne alors que je ne veux supprimer que les cellules à fond vert et garder les autres cellules de la même ligne car il y a d'autres tableaux à côté.
Le code que j'ai trouvé est le suivant:
<code>Sub Test_2()
Derligne = Range("A" & Application.Rows.Count).End(xlUp).Row
For Each C In Range("$F$5:$L$20" & Derligne)
If C.Interior.ColorIndex = 4 Then C.EntireRow.Delete
Next C
End Sub<code>
Merci d'avance pour votre aide
Je souhaite, avec une macro associée à un bouton, supprimer les cellules dont le fond est vert pomme (code 4).
La plage de cellule sur laquelle doit s'appliquer la macro est $F$5:$L$20.
J'ai trouvé un code sur un forum, cependant il supprime toute la ligne alors que je ne veux supprimer que les cellules à fond vert et garder les autres cellules de la même ligne car il y a d'autres tableaux à côté.
Le code que j'ai trouvé est le suivant:
<code>Sub Test_2()
Derligne = Range("A" & Application.Rows.Count).End(xlUp).Row
For Each C In Range("$F$5:$L$20" & Derligne)
If C.Interior.ColorIndex = 4 Then C.EntireRow.Delete
Next C
End Sub<code>
Merci d'avance pour votre aide
5 réponses
-
Bonjour,
Un code plus simple à essayer :Sub Test_2() For Each C In Range("$F$5:$L$20") If C.Interior.ColorIndex = 4 Then C.ClearContents C.Interior.ColorIndex = xlNone End If Next C End Sub
J'ai supposé que la cellule ne doit plus être verte aprés l'effacement mais c'est peut-être pas utile..
A+
-
Merci pour ta réponse pilas31.
Ton code fonctionne, le problème c'est qu'il ne supprime que le contenu des cellules à fond vert alors que j'aimerais supprimer les cellules entières pour que les cellules du dessous se décalent vers le haut de manière à reformer une plage continue. -
D'accord alors tu peux modifier comme cela :
For Each C In Range("$F$5:$L$20") If C.Interior.ColorIndex = 4 Then C.Delete Shift:=xlUp Next C -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Re bonjour,
En réfléchissant, j'ai été un peu rapide car si plusieurs cellules vertes sont superposées il y a un problème. Je te propose alors de changer de syntaxe :Sub Test_2() For lig = 20 To 5 Step -1 For col = 6 To 12 If Cells(lig, col).Interior.ColorIndex = 4 Then Cells(lig, col).Delete Shift:=xlUp Next col Next lig End Sub
A+