Mise a jour du format de cellule excel

Résolu
Bonjour,

je suis débutant en VBA
j'ai une macro existante qui permet de mettre à jour la mise en forme des cellule dans une plage avec beaucoups de cellule,
elle marche bien, mais comme la plage est grande cela mouline un certain temps.

au lieu de rafraichir toute la plage de donnée (H10:GE139), je souhaiterai en auto si possible :

Rafraichir seulement 1 ligne de cette plage de donné si la cellule de la colonne E ou F de cette même ligne est modifiée

j’espère avoir été clair...pouvez vous m'aider?
voici ci dessous la macro actuel

Sub couleur()

Application.ScreenUpdating = False

Set F1 = Worksheets("chronograph")

With F1
Set plage = .Range("H10:GE139")

End With

For Z = 142 To 172

For Each Cell In plage

Cell.Select
If Cell.Value = Cells(Z, 4).Value Then Selection.Interior.Color = F1.Cells(Z, 5).Interior.Color
If Cell.Value = Cells(Z, 4).Value Then Selection.Font.Color = F1.Cells(Z, 5).Font.Color

Next

Next Z

Application.ScreenUpdating = True

End Sub

merci

3 réponses

  1. Bonjour
    Sans fichier il est difficile de te répondre (utilise cjoint.com)

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 5 Or Target.Column > 6 Then Exit Sub
    Application.ScreenUpdating = False
    For Z = 142 To 172
    For Each Cell In sheets("chronograph") .Range(range("H"&target.row),range("GE"&target.row)
    If Cell.Value = Cells(Z, 4).Value Then
    cell.Interior.Color = F1.Cells(Z, 5).Interior.Color
    cell.Font.Color = F1.Cells(Z, 5).Font.Color
    endif
    Next
    Next Z
    Application.ScreenUpdating = True
    End Sub


    Macro à mettre sur la feuille concernée (clic droit sur le nom de la feuille et choisir visualiser le code)

    A+ François
    1
    1. bonjour,
      j'ai publié le fichier voici le lien :

      https://www.cjoint.com/c/KAEsexYjHlV

      depuis j'ai ajouter le fait de lancer la macro lorsque l'une des cases est modifiée

      merci
      0
      1. super et merci franc38

        j'ai réussi a faire exactement se que je voulais grâce à toi en adaptant ma plage à la ligne modifiée voici ce que ça donne:

        Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(ActiveSheet.Range("D10:G139"), Target) Is Nothing Then
        Application.ScreenUpdating = False
        Set F1 = Worksheets("chronograph")

        With F1
        Set plage = .Range(("H" & Target.Row), Range("GE" & Target.Row))

        End With

        For Z = 142 To 172
        For Each Cell In plage
        Cell.Select
        If Cell.Value = Cells(Z, 4).Value Then Selection.Interior.Color = F1.Cells(Z, 7).Interior.Color
        If Cell.Value = Cells(Z, 4).Value Then Selection.Font.Color = F1.Cells(Z, 7).Font.Color
        Next
        Next Z
        Application.ScreenUpdating = True
        End If
        End Sub

        merci
        0