• Initiateur de la discussion Initiateur de la discussion Christian3000
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Christian3000

Guest
Bonjour à tous,

Je sèche sur deux problèmes avec les formules imbriquées if: j'ai mis au point un petit calendrier dont je voudrais que les case se colorent et/ou se biffent selon 2 conditions (cf.code plus bas). Ça marche très bien lorsque une seule condition est remplie avec une seule conséquence. Mais je ne m'en sors plus lorsque la cellule respecte les deux conditions (dans ce cas là elle devrait se colorer et le texte dedans se biffer! En fait, selon la structure de mon code, elle ne fera que se colorer...
Deuxième problème lié au premier: ma dernière ligne (clearformat) permet de supprimer la couleur de la cellule si la condition 1 a changé. J'aimerais également pouvoir supprimer le "biffage" si la condition 2 a changé. J'ai essayé cela...

Else
annee.Cells(X, y).Interior.ColorIndex = clearformat and _
annee.Cells(X, y).Font.Strikethrough = false

...mais ça ne marche pas!

Si vous pouviez m'aider, ça serait génial!

Salutations à tous,

Christian

Le code:

For X = 1 To 28
For y = 1 To 24

'Condition 1:
If (annee.Cells(X, y).Value = Range("int1").Value) _
Or (annee.Cells(X, y).Value = Range("int2").Value) _
Or (annee.Cells(X, y).Value = Range("int3").Value) _
Or (annee.Cells(X, y).Value = Range("int4").Value) Then
annee.Cells(X, y).Interior.ColorIndex = 6

'Condition 2:
ElseIf ((annee.Cells(X, y).Value >= Range("dv").Value) _
And (annee.Cells(X, y).Value <= Range("fv").Value)) Then
annee.Cells(X, y).Font.Strikethrough = True

Else
annee.Cells(X, y).Interior.ColorIndex = clearformat

End If

Next y
Next X
 
Re : IF imbriqué

Bonjour Christian

essaye peut être ainsi, non testé :

Code:
annee.Cells(X, y).Interior.ColorIndex = clearformat

If (annee.Cells(X, y).Value = Range("int1").Value) _
    Or (annee.Cells(X, y).Value = Range("int2").Value) _
    Or (annee.Cells(X, y).Value = Range("int3").Value) _
    Or (annee.Cells(X, y).Value = Range("int4").Value) Then
        annee.Cells(X, y).Interior.ColorIndex = 6
End If

'Condition 2:
If ((annee.Cells(X, y).Value >= Range("dv").Value) _
    And (annee.Cells(X, y).Value <= Range("fv").Value)) Then
        annee.Cells(X, y).Font.Strikethrough = True
End If

A noter que la condition "elseif" n'est testée que si le test "if" précédent n'a pas renvoyé "vrai", ce qui explique que la "double condition" ne soit pas testée...

bonne journée
@+
 
Re : IF imbriqué

Merci Pierrot!

Ton code marche très bien!
Par contre le clearformats n'a pas l'air d'être reconnu par VBA ("erreur de compilation; fonction ou variable attendue"). J'ai essayé comme ça:

annee.Cells(X, y).Interior.ColorIndex = clearformat
annee.Cells(X, y).Font.Strikethrough = False

et ça marche...
 
Re : IF imbriqué

Re,

oui pour le "clearformat", regarde le post 3, sinon tu peux également modifier ainsi, en fonction de ce que tu as et de ce que tu veux :

Code:
If (annee.Cells(X, y).Value = Range("int1").Value) _
    Or (annee.Cells(X, y).Value = Range("int2").Value) _
    Or (annee.Cells(X, y).Value = Range("int3").Value) _
    Or (annee.Cells(X, y).Value = Range("int4").Value) Then
        annee.Cells(X, y).Interior.ColorIndex = 6
Else
    annee.Cells(X, y).Interior.ColorIndex = xlNone
End If

'Condition 2:
If ((annee.Cells(X, y).Value >= Range("dv").Value) _
    And (annee.Cells(X, y).Value <= Range("fv").Value)) Then
        annee.Cells(X, y).Font.Strikethrough = True
Else
    annee.Cells(X, y).Font.Strikethrough = False
End If

@+
 
Re : IF imbriqué

Mmmmh, ça m'a l'air encore plus élégant ton affaire. Merci en tout cas pour le coup de main, pas facile de se repérer dans la jungle VBA lorsqu'on débute...

Excellente journée et à bientôt sur le forum!

Ch.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
294
Réponses
1
Affichages
670
Réponses
0
Affichages
657
Retour