Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Effacer le contenu des cellules jaunes sans supprimer les formules

8 réponses
Avatar
JP
Bonjour,

J'ai =E9crit 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=E9e?

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


Merci

JP

8 réponses

Avatar
DanielCo
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
Avatar
JP
Bonjour Daniel,

Pour toi le code est bon?

JP
Avatar
DanielCo
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
Avatar
MichD
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
Avatar
JP
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
Avatar
JP
J'allais oublier de remercier Daniel.
Merci Daniel

JP
Avatar
MichD
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
Avatar
JP
Je viens de regarder. C'est effectivement intéressant. Je n'ai pas le ref lex d'aller chercher dans l'aide.

Merci

JP