Supprimer valeur dont la cellule est de couleur

Bonjour,

Je recherche une fonction (relié à un bouton) qui me permettrait de supprimer les valeurs inscrites dans les cellules d'une certaine couleur (RGB(235, 241, 222)), qui sont inscrites manuellement. Toutes les cellules qui ne sont pas de cette couleur sont verrouillé et ne doivent pas être modifiés. J'ai essayé ce code mais il supprime seulement la valeur inscrites dans la première cellule ayant cette couleur:

Sub delete()

For Each vcel In Range("A1: K999")

If vcel.Interior.Color = RGB(235, 241, 222) Then

vcel.ClearContents

End If

Next vcel

End Sub

J'aimerais aussi pouvoir supprimer les valeurs pour deux couleurs de cellule, soit les verte (qui sont entrée manuellement) et les rosé (menu déroulant). Je joint un exemple de mise en page d'une de mes feuilles de calcul.

Merci d'avance !

103exemple.xlsm (22.62 Ko)

Bonsoir,

ajoutez ce morceau de code avant la boucle et voyez ce qui est écrit !

MsgBox ([a2].Interior.Color & Chr(10) & RGB(235, 241, 222))

En fait, il y a une erreur de numéro de couleur, donc ça n'efface pas...

@ bientôt

LouReeD

Après vérification, la fonction fonctionne parfaitement dans le fichier exemple que j'ai joint... mais pas dans mon fichier complet...

Je joins un autre exemple.

168exemple.xlsm (92.80 Ko)

Deux choses :

1 j'insiste sur le numéro de couleur qui n'est pas identique

2 en mettant .value="" ça marche

Sub delete()

For Each vcel In Range("A1: K9")
    If vcel.Interior.Color = 12379351 Then 'RGB(235, 241, 222) Then
    vcel.Value = ""
End If

Next vcel

End Sub

@ bientôt

LouReeD

Sa ne fonctionne toujours pas dans mon classeur... vraiment étrange.

Je sais pour la couleur... Elle est ok dans mon fichier original mais différente dans le fichier exemple que j'ai joins. La cause du problème n'est pas la couleur.

Bonsoir,

Désolé, chez moi cela marche bien...

Avez-vous essayé de mettre en début de code :

ActiveSheet.UnProtect

En effet sur le code exemple, la protection est mise...

@ bientôt

LouReeD

Bonjour jasonjacques,

Bonjour LouReeD,

Pour info, je fais le même constat que jasonjacques.

Le déroulement de la macro delete sur la feuille "Bordereau main d'oeuvre" est stoppé après traitement de la cellule A2.

Si on supprime les MFC, le fonctionnement est correct.

Remarques :

  • j’ai supprimé le Module 3 qui contenait un doublon de la procédure delete.
  • j'ai adapté la couleur avec RGB(215, 228, 188)

A+

117exemple.xlsm (80.34 Ko)

Oui effectivement en supprimant quelques module inutile, tout est entré dans l'ordre !!

Merci !

Bonjour,

Je vous contacte car en effet cette formule marche très bien sur ma première feuille.

Par contre je souhaiterais qu'elle s'exécute sur toutes les feuilles de mon classeur.

Pourriez-vous m'aider sur ce point.

Merci d'avance

58exemple.xlsm (24.08 Ko)

Bonsoir,

essayez d'intégrer une boucle du style :

Private Sub CommandButton1_Click()
    Dim Sh As Worksheet
    For Each Sh In Worksheets
        With Sh
            For Each Vcel In .Range("A1:Z99")
                If Vcel.Interior.Color = 11851260 Or Vcel.Interior.Color = 16777164 Then
                Vcel.Value = ""
                End If
            Next Vcel
        End With
    Next
End Sub

Remarquez aussi le fait de mettre une instruction "OR" afin de ne faire qu'une boucle pour le test de couleur.

Par contre il faut que les zones à tester soient "identiques" ou du moins qu'elles soient toutes comprise dans la référence ("A1:Z99").

Remarque supplémentaire : ouvrez plutôt un nouveau sujet plutôt que de déterrer un sujet de 2015 ! Heureusement que je veille au grain !

@ bientôt

LouReeD

Merci ça marche nikel.

Je ferais plus attention la prochaine fois pour posé mes questions.

Bonsoir,

pas de soucis pour la prochaine fois...

Merci de vos remerciements !

@ bientôt

LouReeD

Rechercher des sujets similaires à "supprimer valeur couleur"