condition avec case select

gerard55

XLDnaute Occasionnel
Bonjour à tous
Je cherche à mettre des cellules en colonne "C" en couleur en fonction de critères situer en colonne "M"
le code suivant ne fonctionne que pour le premier case Pourquoi?
merci pour votre aide
à+

Sub CouleurActi()
For i = 1 To 63
i = i + 1
Sheets("planning").Select
Cells(i, 3).Select
Select Case Sheets("planning").Cells(i, 3).Offset(0, 10).Value
Case "sport"
Selection.Interior.ColorIndex = 6
Case "bénévole"
Selection.Interior.ColorIndex = 13
Case "sacat"
Selection.Interior.ColorIndex = 21
Case ""
Selection.Interior.ColorIndex = xlNone
End Select
Next
End Sub
 

matthieu33

XLDnaute Occasionnel
Re : condition avec case select

Bonsoir Gérard55,

Peux-tu essayer le code ci-dessous ?

Code:
Sub CouleurActi()
    Sheets("planning").Select
    For i = 1 To 63
        Cells(i, 3).Select
        
        Select Case Sheets("planning").Cells(i, 3).Offset(0, 10).Value
            Case "sport"
                Selection.Interior.ColorIndex = 6
            Case "bénévole"
                Selection.Interior.ColorIndex = 13
            Case "sacat"
                Selection.Interior.ColorIndex = 21
            Case Else
                Selection.Interior.ColorIndex = xlNone
        End Select
    Next
End Sub

Je ne sais pas si cela correspond à ce que tu attends. Si cela ne va pas, peux-tu joindre un fichier ?

Merci

@+
 

bertgrav

XLDnaute Occasionnel
Re : condition avec case select

bonsoir,

essaie ce code ça devrait aller

amicalement

chantal



Sub CouleurActi()

Sheets("planning").Select

For i = 1 To 63

Cells(i, 3).Select
Select Case Sheets("planning").Cells(i, 3).Offset(0, 10).Value
Case "sport"
Selection.Interior.ColorIndex = 6
Case "bénévole"
Selection.Interior.ColorIndex = 13
Case "sacat"
Selection.Interior.ColorIndex = 21
Case ""
Selection.Interior.ColorIndex = xlNone
End Select
Next
End Sub
 

patte d'ours

XLDnaute Occasionnel
Re : condition avec case select

Ta macro me semble bizarre
le i=i+1 revient à sauter une ligne sur 2. Si c'est réellement ce que tu veux faire, il vaudrait mieux écrire For i=1 to 63 step 2. Si tu veux la formule sur toutes les lignes, il faut enlever cette instruction.

Essaye de modifier la ligne select case comme ci-dessous.


Sub CouleurActi()
For i = 1 To 63
Sheets("planning").Select
Cells(i, 3).Select
Select Case ActiveCell.Offset(0, 10).Value 'LIGNE MODIFIEE
Case "sport"
Selection.Interior.ColorIndex = 6
Case "bénévole"
Selection.Interior.ColorIndex = 13
Case "sacat"
Selection.Interior.ColorIndex = 21
Case ""
Selection.Interior.ColorIndex = xlNone
End Select
Next
End Sub

Par contre, dans la mesure où ta 4ème condition est sans format, tu pourrais encore plus facilement passer par une mise en forme conditionnelle.

Bonne soirée
 

gerard55

XLDnaute Occasionnel
Re : condition avec case select

Bonsoir
Merci pour votre aide. Seul le code de Chantal fonctionne. Le recours à CASE s'impose car il y a plus de 3 conditions donc le format conditionnel n'est pas suffisant.
Par contre si je ne veux pas que la boucle i = 1 to 10 . cells(i,3) commence ligne 1 comment dois-je l'indiquer.
Merci Chantal
à+
 

jeanpierre

Nous a quitté
Repose en paix
Re : condition avec case select

Bonsoir le fil,

S'ont été tous plus rapide que moi hier.... mais mêmes constations au début...

Pour répondre : for i = x (ce que tu veux comme début) to....

Puisque le i est indexé dans la suite de ton premier exemple, tu peux commencer à i = 4 par exemple....

Je te signale, tout de même, que si ton exemple donne 4 conditions, seules 3 sont attachées à une couleur... Déjà dit d'ailleurs... Tu pouvais mettre un ETC.... ensuite qui aurait permis de comprendre qu'il y avait une suite.

Pour te dire aussi, que, dans un exemple, il ne faut pas être trop minimaliste.

A te lire eeet pour plus tard, de meilleures explications.

Jean-Pierre
 

Discussions similaires

Réponses
12
Affichages
272
Réponses
17
Affichages
977

Statistiques des forums

Discussions
312 779
Messages
2 092 045
Membres
105 168
dernier inscrit
makari69