Mise en forme conditionnelle

Bonjour,

je voudrais mettre en forme un tableau de manière à ce que :

  • si $h978 = $g978 alors $i978 est colorié en vert
  • si $h978 <> $g978 alors $i978 est colorié en rouge
  • la macro doit continuer à descendre de ligne en ligne jusqu'à ce que $h (ou $g) = "" à ce moment la macro doit s'arrêter

Pour le coup j'ai essayé ceci

Sub verif()

Application.ScreenUpdating = False

Set F1 = Worksheets("Fixture")

With F1

Set plage = .Range("H978:H1233")

End With

For Z = 978 To 1233 Step 1

For Each cell In plage

cell.Select

If cell.Value = Cells(Z, 7).Value Then Cells(Z, 9).Interior.Color = RGB(255, 0, 0)

ElseIf cell.Value <> Cells(Z, 7).Value Then Cells(Z, 9).Interior.Color = RGB(0, 255, 0)

ElseIf cell.Value = "" Then Exit Sub

Else

Next

Next Z

End If

Application.ScreenUpdating = True

End Sub

Problème quand je veux lancer la macro excel me dit "erreur de compilation : Else sans if"

Comment résoudre ce problème ? Le reste de mon code est-il correct?

Bonjour,

commencer par "indenter" votre code comme l'exemple ci dessous et vous arriverez mieux à voir le "fin de structure manquante" :

for i=1 to 10
    If a=3 then
         b=4
    elseif a=4 then
         b=7
next i

là on voit tout de suite qu'il manque un "endif" car sur la même "colonne" que le if il n'y en a pas, la structure n'est pas "fermée"

d'où un message "un else sans if"

Après pour une MFC est-il besoin que vous passiez par une macro ? Il y a un menu dans le ruban "accueil" qui gère très bien cela.

@ bientôt

LouReeD

Bonjour,

le End If qui se trouve après les Next devrait se trouver avant. A la place du Else (qui ne sert à rien).

Par ailleurs, pour chaque ligne ( 978 To 1233) on balaye l'ensemble de la plage H978:H1233, soit 255*255 itérations !

Avec une seule itération:

With F1
For Z = 978 To 1233 
     If .Cells(Z, 7).Value = "" or .Cells(Z, 8).Value = "" then Exit sub
     If .Cells(Z, 7).Value = .Cells(Z, 8).Value Then 
          .Cells(Z, 9).Interior.Color = RGB(255, 0, 0)
     Else
          .Cells(Z, 9).Interior.Color = RGB(0, 255, 0)
    End if
Next Z
End With

A+

Edit: Bonjour LouReed

Merci pour vos réponses

ça fonctionne à merveille maintenant

Bonne journée

Merci de vos remerciements !

@ bientôt sur le forum

LouReeD

Rechercher des sujets similaires à "mise forme conditionnelle"