Mise a jour du format de cellule excel

Résolu/Fermé
Faber - Modifié le 30 janv. 2021 à 18:30
 Faber - 30 janv. 2021 à 21:47
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
A voir également:

3 réponses

franc38 Messages postés 197 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 27 février 2023 38
Modifié le 30 janv. 2021 à 18:41
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
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
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