Colorer une cellule si la valeur de la cellule a été modifiée

Marco56

XLDnaute Nouveau
Bonjour à tous,

J'ai développé une macro qui change la valeur de la cellule en fonction de deux conditions. J'ai deux feuilles avec en feuille 1 un planning sur une semaine, et en feuille 2 des heures travaillées en fonction des personnes et de la date. La macro a pour but de modifier la valeur de la cellule en feuille 1 si le nom et la date des deux feuilles correspondent.

Voici la macro qui fonctionne, juste à titre indicatif :

Code:
Sub Macro()
Dim datejour As Range
Dim datej As Range
Dim X As Integer

' ActiveSheet.Paste Destination:=Worksheets("Feuil1").Range(.Cells(4, X + 1), .Cells(200, X + 1))

Dim Nom As String, i As Long, j As Long                 'Collage en fonction des conditions (PROBLEME A PARTIR DE LA)
Sheets(1).Select
i = 4
With Sheets(2)
  Do While Cells(i, 2) <> "FIN"
    Nom = Cells(i, 2)
    For j = 4 To .Range("B200").End(xlUp).Row
      If Nom = .Cells(j, 2) Then
      Set datejour = Worksheets("Feuil2").Cells(j, 5)
With Worksheets("Feuil1").Range("A2:Z2")
Set datej = .Find(datejour, LookIn:=xlFormulas)
X = datej.Column
       End With
        Sheets(1).Cells(i, X).Value = Sheets(2).Cells(j, 17).Value
            Exit For
      End If
    Next
    i = i + 1
  Loop
End With
End Sub

Ce que je souhaite maintenant, c'est que la macro puisse colorier la cellule si la valeur a changée. En effet, la plage de cellules est importante et si je dois vérifier si chaque valeur a changée une par une, ça ne servait à rien de faire une macro... ^^

Donc je voudrais que si la valeur d'une cellule sur la plage "A1:I200" a été modifiée, alors la macro colore cette cellule en jaune.

Merci de votre aide,

Bonne journée :)
 

job75

XLDnaute Barbatruc
Re : Colorer une cellule si la valeur de la cellule a été modifiée

Bonjour Marco56,

Donc je voudrais que si la valeur d'une cellule sur la plage "A1:I200" a été modifiée, alors la macro colore cette cellule en jaune.

Pas sûr que ce soit une excellente idée, mais on va faire comme si.

1) Dans Module1 :

Code:
Public mem 'mémorisation du tableau de valeurs
2) Dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
mem = Feuil1.[A1:I200] 'CodeName de la feuille
End Sub
3) Dans le code de la feuille :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
mem = [A1:I200] 'tableau des valeurs
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, ub&, i&, j&
tablo = [A1:I200]
ub = UBound(tablo, 2)
For i = 1 To UBound(tablo)
  For j = 1 To ub
    If tablo(i, j) <> mem(i, j) Then Cells(i, j).Interior.ColorIndex = 6 'couleur jaune
  Next
Next
End Sub
A+
 

Discussions similaires

Réponses
5
Affichages
186

Statistiques des forums

Discussions
312 215
Messages
2 086 326
Membres
103 180
dernier inscrit
Vcr