Changer format de cellules adjacentes

Résolu
Bonjour,

En cellule A1, j'ai une date
J'aimerais que les cellules A2, A3, A4 et A5 change de format en fonction de conditions à définir par rapport à la cellule A1.

Ex. si la date est un samedi, les 4 cellules suivantes seront en jaune

Merci de ne pas me répondre qu'on peut le faire avec les mises en forme conditionnelles, ce n'est pas l'objectif.

Merci pour votre aide

6 réponses

  1. Ok, super merci beaucoup pour votre aide ;-)

    Une très bonne journée à vous
    1. Re

      ColFin = Split(Cells(8, NumCol + 5).Address, "$")(1)

      8--> un numero ligne, parce qu'il en faut un
      "$")(1) ----> fait parti de l'instruction split pour la lettre colonne

      la reference n'a pas d'importance, l'objectif est d'avoir la lettre de la colonne qui nous interesse

      autre utilisation
      'recuperation de la ligne
      lig = Split(Range(cellule.Address).Address, "$")(2)
      1. je pense que cela fonctionne ! :D

        merci beaucoup, je vais maintenant essayer de comprendre un peu le code pour pouvoir l'adapter si nécessaire

        ColFin = Split(Cells(8, NumCol + 5).Address, "$")(1)

        Pourriez-vous juste me dire d'où viennent le (1) et le 8 dans ce code ?

        Un grand merci
        1. Re,

          devrait aller:

          Private Sub Workbook_Open()
          Dim MyWeekDay
          With Worksheets("feuil1")
          For Each Cellule In .Range("D6:DQ37")
          Target = Cellule.Value
          If IsDate(Target) Then
          If Target < Range("F2") Then
          Cellule.Interior.Color = vbWhite
          With Cellule.Font
          .Color = RGB(64, 96, 255)
          .Italic = True
          End With
          Else
          Cellule.Interior.Color = vbWhite
          With Cellule.Font
          .Color = vbBlack
          .Italic = False
          End With
          End If
          MyWeekDay = Weekday(Target)
          'Jour semaine Samedi et Dimanche
          If MyWeekDay = 1 Or MyWeekDay = 7 Then
          'lettre en nombre
          NumCol = Range(Cellule.Address).Column
          'cherche le nom (la lettre) de la colonne+5
          ColFin = Split(Cells(8, NumCol + 5).Address, "$")(1)
          'changement couleur de fond
          .Range(Cellule.Address & ":" & ColFin & Cellule.Row).Interior.Color = vbBlack
          Else
          Cellule.Interior.Color = vbWhite
          End If
          End If

          Next Cellule
          End With
          End Sub
          1. Bonjour,

            Avec quoi voulez vous obtenir ces formats cellules ?????
            1. Je ne comprends pas la question, Avec quoi?

              en fait j'ai une plage assez grande de cellule dans laquelle j'aimerais affecter plusieurs conditions. J'essaye donc d'en faire une et les autres suivront facilement je crois.

              Donc dans l'exemple ici, j'aimerais dire que lorsque ma cellule A1 (target pour la plage) est un samedi, alors les cellules A1 à A5 se mettent en noir par exemple

              autrement dit, ma sélection target (=une seule cellule) se transforme en une petite plage (=5 cellules) et c'est sur cette plage que j'essaye de faire changer le format
            2. Re,

              votre deuxième message est apparu apres que j'ai valide le mien.

              Avec l'événement Private Sub Worksheet_SelectionChange(ByVal Target As Range), ça devrait aller. Je regarde la chose

              A+
            3. super merci
            4. en fait, seule la ligne ici en gras ne fonctionne pas..

              Private Sub Workbook_Open()
              For Each Cellule In Range("D6:DQ37")
              Target = Cellule.Value
              If IsDate(Target) Then
              If Target < Range("F2") Then
              Cellule.Interior.Color = vbWhite
              With Cellule.Font
              .Color = RGB(64, 96, 255)
              .Italic = True
              End With
              Else
              Cellule.Interior.Color = vbWhite
              With Cellule.Font
              .Color = vbBlack
              .Italic = False
              End With
              End If

              Dim MyDate, MyWeekDay
              MyDate = Target
              MyWeekDay = weekday(MyDate)
              If MyWeekDay = [1] Or MyWeekDay = [7] Then

              Range(Target, Target(0, 5)).Interior.Color = vbBlack

              Else
              Cellule.Interior.Color = vbWhite
              End If
              End If
              Next
              End Sub
          2. l'objectif après sera d'étendre la fonction sur une plage de donnée entière

            cela donnerait quelque chose du genre :

            If MyWeekDay = [1] Or MyWeekDay = [7] Then

            Range(Target, Target(0, 5)).Interior.Color = vbBlack

            target serait A1 par exemple et le reste dans le but d'étendre la sélection de 5 cases vers la droite..

            mais évidemment, cela ne fonctionne pas :(