Mise en forme conditionnelle en VBA

Bonjour

Ci-joint le fichier avec explications

Merci pour votre aide

25test.xlsm (17.62 Ko)

Une proposition :

Option Explicit

Sub Macro1()
    Dim nl As Long, nC As Long, i As Long, j As Long, k As Long

    nl = ActiveSheet.UsedRange.Rows.Count
    nC = ActiveSheet.UsedRange.Columns.Count
    For j = 3 To nl
        For i = 2 To nC
            If Cells(j, i) = "B" Then
                For k = i To nC
                    Cells(j, k).Interior.Color = RGB(255, 0, 0)
                Next k
            End If
        Next i
    Next j
End Sub

Salut Optimix , Joco7915

une autre proposition qui utilise la MFC de la feuille :

12test.xlsm (14.62 Ko)

=COLONNE()>EQUIV("B";$B3:$H3;0) qui saplique à : =$B$3:$H$8

Bonjour Optimix ,AMIR

Merci pour vos réponses

Optimix ton code fonctionne pas comme j'aurais voulu,

en ne laissant qu'une seule ligne avec 1 A en colonne B et 1B en colonne C je retrouve

la ligne 3 en rouge de colonne C a colonne Z

AMIR ta formule est bonne et je ne la connaissait pas ,je garde en stock en cas de besoin

Crdlt

Curieux. Qu'est-ce qui ne fonctionne pas ? J'ai pris ton propre fichier.

18test-1.xlsm (18.23 Ko)

Bonjour tout le monde,

Une variante:

Sub Macro1()
  Dim dl%, dc%, i%, col%, cel As Range

  Application.ScreenUpdating = False '....................................Désactive le rafraichissement de l'écran

  With Sheets("Feuil1") '.................................................agit sur cette feuille uniquement
   dl = .Range("A" & Rows.Count).End(xlUp).Row '..........................dernière ligne en fonction de la colonne A
   dc = .UsedRange.Columns.Count '........................................dernière colonne utilisée
    .Range(.Cells(3, 2), .Cells(dl, dc)).Interior.Color = xlNone '........supprime les couleurs de la colonne 2 à la dernière
     For i = 3 To dl '....................................................boucle de la ligne 3 à la dernière
      Set cel = .Rows(i).Find(What:="B") '................................Recherche B sur la ligne
        If Not cel Is Nothing Then '......................................si B trouvé
          col = cel.Column '..............................................on récupère le n° de la colonne
          .Range(.Cells(i, col), .Cells(i, dc)).Interior.Color = vbRed '..colore en rouge
        End If
     Next i '.............................................................prochaine ligne
  End With
End Sub

Cordialement,

erreur de post

Salut xorsankukai

Il me semble que Optimix a oublie de réinitialiser la couleur de la plage chaque fois comme a mentionné xorsankukai

par :

.Range(.Cells(3, 2), .Cells(dl, dc)).Interior.Color = xlNone

Pour les limites de plage (tableau) sont-ils bien rectangulaire !? Y a t’il autre donnes que le tableau à colorer!?

Retire ton message et détruit les colonnes I à Z qui ne sont manifestement pas vide. Dis-moi ensuite si ça ne fonctionne pas.

Bonjour Optimix

J'ai regardé les cellules de I a Z sont vides le problème persiste.

Mais c'est bon j'ai pris ce que tu as mis hier a 14h00

Bonne journée

Rechercher des sujets similaires à "mise forme conditionnelle vba"