Gestion de plages de cellules avec plusieurs conditions

Bonjour,

Mes meilleurs voeux à tous en cette année nouvelle.

J'ai une macro qui doit sélectionner une plage de cellules, ici B20:B26, et mettre en gras toutes les lignes dont la date est inférieure à la date d'aujourd'hui.

Le début de cette plage est B20, seule cellule connue; les autres cellules sont variables ; cette plage pouvant aller de 1 à 300 lignes. Dans l'exemple, B26 est variable.

Cette plage peut aussi être vide de toutes valeurs; elle peut commencer par une cellule vide, ou par une cellule remplie, elle peut être composée de cellules vides et de cellules remplies qui ne se suivent pas forcément.

Toutes ces conditions doivent faire l'objet de la macro.

Quand la plage n'est pas entièrement vide, la dernière cellule est toujours remplie.

La condition plage vide fonctionne, celle plage débutant par une cellule vide marche aussi,ce que je ne comprends pas, pourquoi celle débutant par cellule remplie ne fonctionne pas.

Je n'arrive pas à y introduire cette condition.

Quelqu'un peut-il m'aider à y voir clair ?

Merci d'avance

27essai3x.xlsm (21.37 Ko)

Bonjour

Si ce n'est pas important la création de ta zone définie "creance1"

Essayes

Private Sub Workbook_Open()
Dim Dte As Date
Dim J As Long
Dim Derlig As Long

  ActiveWindow.WindowState = xlMaximized
  Worksheets(1).ScrollArea = "A1:Z200"
  Dte = Sheets("Feuil3").Range("E2").Value
  Application.ScreenUpdating = False

  Dte = Sheets("Feuil3").Range("E2").Value
  With Sheets(1)
    .ScrollArea = "A1:Z200"
    Derlig = .Range("B" & Rows.Count).End(xlUp).Row
    .Range("B20:AN" & Derlig).Font.Bold = False
    For J = 20 To Derlig
      If .Range("B" & J) <> "" And .Range("B" & J) <= Dte Then
        .Range(.Range("B" & J), .Range("B" & J).End(xlToRight)).Font.Bold = True
      End If
    Next J
  End With
End Sub

Salut,

Je te remercie pour ta réponse. Cela fonctionne très bien. Comme tout débutant, je ne comprends pas tout ce que tu as fait.

Comme tu as vu dans le fichier, il y a plusieurs ensembles de cellules qui se ressemblent. Le 1er commence à B20, l'autre G20, l'autre encore L20, etc... Ils se ressemblent en tant que structures, mais les données sont variables pour chaque.

Ce que tu viens de me donner je dois le multiplier pour chaque case. Je ne sais pas si je m'exprime bien.

Or, j'ai remarqué que tu as mis par exemple : .ScrollArea = "A1:Z200". J'ai tenté de changer les noms des cellules, cela n'a pas fonctionné.

Sais-tu comment multiplier le code que tu m'as envoyé ?

Merci d'avance

Bonjour

ce code traite tous les tableaux (à vérifier)

vianney a écrit :

Or, j'ai remarqué que tu as mis par exemple : .ScrollArea = "A1:Z200"

Cette instruction était présente j'ai juste recopié

Private Sub Workbook_Open()
Dim Dte As Date
Dim J As Long, Derlig As Long
Dim I As Integer

  ActiveWindow.WindowState = xlMaximized
  Worksheets(1).ScrollArea = "A1:Z200"
  Dte = Sheets("Feuil3").Range("E2").Value
  Application.ScreenUpdating = False

  Dte = Sheets("Feuil3").Range("E2").Value
  With Sheets(1)
    .ScrollArea = "A1:Z200"
    ' Pour annuler
    '.ScrollArea = ""
    Derlig = .Columns("B:N").Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    For I = 2 To 40 Step 5
      .Range(.Cells(20, I), .Cells(Derlig, I + 4)).Font.Bold = False
      For J = 20 To Derlig
        If .Cells(J, I) <> "" And .Cells(J, I) <= Dte Then
          .Cells(J, I).Resize(1, 4).Font.Bold = True
        End If
      Next J
    Next I
  End With
End Sub

Salut,

C'est exactement je que je cherchais. Merci beaucoup. J'ai même pu l'intégrer à la macro définitive.

Je vais fermer la discussion. Merci encore.

Bonne Journée.

Rechercher des sujets similaires à "gestion plages conditions"