ntan-évindi
XLDnaute Occasionnel
Bonjour à tous,
C'est la première fois que je pose une question sur ce forum et si je l'adresse à vous c'est que mes maigres connaissances ne me permettent pas, malgré des recherches, de résoudre un problème de mise en forme conditionnelle par macro.
Dans un ficher que je joins, j'ai mis une macro dont voici un extrait du code:
Sub Formatcond()
For Each mycell In Range("e24:z50")
If mycell.Text = "SF" Then
With mycell.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
End If
If mycell.Text = "KJ" Then
With mycell.Interior
.ColorIndex = 45
.Pattern = xlSolid
End With
End If
‘etc…
Next
End Sub
Vous pouvez voir dans le fichier joint que dans chaquecellule dont le fond est grisé, en pointillé; il y a une liste déroulante, la sélection d'initiales dans cette liste entraine la coloration de la cellule au moyen de la macro.
Premier problème:
- si je veux vider le contenu de la cellule la mise en forme résultant de la macro reste.
pour y remédier, j'ai ajouté ceci:
If mycell.Text = "" Then
With mycell.Interior
.ColorIndex = 0
.Pattern = xlSolid
End With
End If
mais dans ce cas l'utilisation du code ci-dessus détruit toute ma mise en forme de base, (fond des cellules en grisé pointilklé).
Deuxième problème
- avec cette macro et d'ailleurs aussi avec d'autre que j'ai essayé, il est impossible de protéger la feuille, cela génère un bug.
Quelqu'un a t il une idée pour apporter une solution.
D'avance je vous en remercie.
Cordialement.
Ntang
C'est la première fois que je pose une question sur ce forum et si je l'adresse à vous c'est que mes maigres connaissances ne me permettent pas, malgré des recherches, de résoudre un problème de mise en forme conditionnelle par macro.
Dans un ficher que je joins, j'ai mis une macro dont voici un extrait du code:
Sub Formatcond()
For Each mycell In Range("e24:z50")
If mycell.Text = "SF" Then
With mycell.Interior
.ColorIndex = 7
.Pattern = xlSolid
End With
End If
If mycell.Text = "KJ" Then
With mycell.Interior
.ColorIndex = 45
.Pattern = xlSolid
End With
End If
‘etc…
Next
End Sub
Vous pouvez voir dans le fichier joint que dans chaquecellule dont le fond est grisé, en pointillé; il y a une liste déroulante, la sélection d'initiales dans cette liste entraine la coloration de la cellule au moyen de la macro.
Premier problème:
- si je veux vider le contenu de la cellule la mise en forme résultant de la macro reste.
pour y remédier, j'ai ajouté ceci:
If mycell.Text = "" Then
With mycell.Interior
.ColorIndex = 0
.Pattern = xlSolid
End With
End If
mais dans ce cas l'utilisation du code ci-dessus détruit toute ma mise en forme de base, (fond des cellules en grisé pointilklé).
Deuxième problème
- avec cette macro et d'ailleurs aussi avec d'autre que j'ai essayé, il est impossible de protéger la feuille, cela génère un bug.
Quelqu'un a t il une idée pour apporter une solution.
D'avance je vous en remercie.
Cordialement.
Ntang