Effacer le contenu des cellules jaunes sans supprimer les formules

Le
JP
Bonjour,

J'ai écrit ce code pour effacer le contenu des cellules fond jaune mais i=
l ne fonctionne pas.
Il efface aussi les cellules fond vert.
De plus j'ai un message d'erreur

Une idée?

Sub EffaceJaune()
For Each c In Range("a1:D30")
If c.Interior.Color = 52479 Then
c.SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
Next c
End Sub


Merci

JP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #25548272
Bonjour,
Il est possible que les cellules effacées par erreur aient un fond
jaune, le vert étant superposé par une mise en forme conditionnelle.
Cordialement.
Daniel


Bonjour,

J'ai écrit ce code pour effacer le contenu des cellules fond jaune mais il ne
fonctionne pas. Il efface aussi les cellules fond vert.
De plus j'ai un message d'erreur

Une idée?

Sub EffaceJaune()
For Each c In Range("a1:D30")
If c.Interior.Color = 52479 Then
c.SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
Next c
End Sub


Merci

JP
JP
Le #25548362
Bonjour Daniel,

Pour toi le code est bon?

JP
DanielCo
Le #25548392
J'aurais plutôt écrit comme ça :
Sub EffaceJaune()
For Each c In Range("a1:D30").SpecialCells(xlCellTypeConstants, 23)
If c.Interior.Color = 52479 Then
c.ClearContents
End If
Next c
End Sub

Après vérification :
c.SpecialCells(xlCellTypeConstants, 23)
Sélectionne TOUTES les cellules contenant des constantes.


Bonjour Daniel,

Pour toi le code est bon?

JP
MichD
Le #25548742
Bonjour,

À la suggestion de Daniel, j'ajouterais si j'étais toi
la ligne de code suivante : "On Error Resume Next"

Quand tu utilises ceci : "SpecialCells", cela génère une
erreur si la plage de cellules ne contient pas au moins
une cellule équivalente.... C'est une question de sécurité!

'--------------------------
J'aurais plutôt écrit comme ça :
Sub EffaceJaune()
On Error Resume Next
For Each c In Range("a1:D30").SpecialCells(xlCellTypeConstants, 23)
If c.Interior.Color = 52479 Then
c.ClearContents
End If
Next c
End Sub
'--------------------------



MichD
---------------------------------------------------------------
"DanielCo" a écrit dans le message de groupe de discussion :
ks5psq$jno$

J'aurais plutôt écrit comme ça :
Sub EffaceJaune()
For Each c In Range("a1:D30").SpecialCells(xlCellTypeConstants, 23)
If c.Interior.Color = 52479 Then
c.ClearContents
End If
Next c
End Sub

Après vérification :
c.SpecialCells(xlCellTypeConstants, 23)
Sélectionne TOUTES les cellules contenant des constantes.


Bonjour Daniel,

Pour toi le code est bon?

JP
JP
Le #25548732
Bonjour Denis,

C'est beaucoup mieux ou très différent comme tu préfères.
Maintenant ça fonctionne même quand il n'y a pas de valeur.

Merci

JP
JP
Le #25548782
J'allais oublier de remercier Daniel.
Merci Daniel

JP
MichD
Le #25549062
Regarde l'aide dans VBA de SpecialCells()

Dans cette ligne de code :
c.SpecialCells(xlCellTypeConstants, 23).ClearContents

Le chiffre 23 représente la somme des valeurs des
constantes suivantes :
Constantes XlSpecialCellsValue
xlErrors -> 16 'Valeur d'erreur du type :
#NA! #NOM! #VALEUR! #REF!
xlLogical -> 4 'Pour les valeurs logiques Vrai ou Faux
xlNumbers -> 1 'Pour les valeurs numériques
xlTextValues -> 2 'Pour les valeurs textes

La procédure ne devrait pas toucher les cellules contenant
une formule ou totalement vides!




MichD
---------------------------------------------------------------
"JP" a écrit dans le message de groupe de discussion :


Bonjour Denis,

C'est beaucoup mieux ou très différent comme tu préfères.
Maintenant ça fonctionne même quand il n'y a pas de valeur.

Merci

JP
JP
Le #25549632
Je viens de regarder. C'est effectivement intéressant. Je n'ai pas le ref lex d'aller chercher dans l'aide.

Merci

JP
Publicité
Poster une réponse
Anonyme