Supprimer des cellules à fond vert sur excel

Résolu
balata9 -  
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

5 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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+

    0
  2. balata9
     
    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.
    0
  3. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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
    
    
    
    0
  4. balata9
     
    Ok merci beaucoup! ça marche super bien.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. pilas31 Messages postés 1878 Statut Contributeur 648
     
    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+
    0