Macro automatique suite au changement de valeur cellule liée a une formule

Bonjour, j'aurais plusieurs classeurs qui seront reliés à un classeur unique et sur lequel, lorsqu'il y a un changement de valeur dans les différents onglets du à la mise à jour des autres classeurs et bien que les codes permettant de changer la couleur d'une forme puisse s'exécuter.

Par exemple :

  • Dans l'onglet XXX du classeur Macro colorier-une-forme-en-fonction-de-la-valeur-d-une-cellule-V4, si la cellule B1 change de valeur (c'est à dire que dans le classeur TEST COULEUR XXX FORME PAR RAPPORT A V4 l'utilisateur à mis à jour sa valeur) alors le code suivant s'exécute, ce qui permet de changer la couleur de la forme XXX dans l'onglet GLOBAL
    Private Sub Worksheet_Change(ByVal Target As Range)
        Sheets("GLOBAL").Select
        ActiveSheet.Shapes.Range(Array("XXX")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
    
     If Not (Range("B2") = "") Then .ForeColor.RGB = RGB(255, 0, 0)
     If Not (Range("B3") = "") Then .ForeColor.RGB = RGB(255, 192, 0)
     If Not (Range("B4") = "") Then .ForeColor.RGB = RGB(0, 255, 0)
            .Transparency = 0
            .Solid
        End With
    TG
        End Sub
  • Dans l'onglet YYY du classeur Macro colorier-une-forme-en-fonction-de-la-valeur-d-une-cellule-V4, si la cellule B1 change de valeur (c'est à dire que dans le classeur TEST COULEUR YYY FORME PAR RAPPORT A V4 l'utilisateur à mis à jour sa valeur) alors le code suivant s'exécute, ce qui permet de changer la couleur de la forme YYY dans l'onglet GLOBAL
    Private Sub Worksheet_Change(ByVal Target As Range)
        Sheets("GLOBAL").Select
        ActiveSheet.Shapes.Range(Array("YYY")).Select
        With Selection.ShapeRange.Fill
            .Visible = msoTrue
    
     If Not (Range("B2") = "") Then .ForeColor.RGB = RGB(255, 0, 0)
     If Not (Range("B3") = "") Then .ForeColor.RGB = RGB(255, 192, 0)
     If Not (Range("B4") = "") Then .ForeColor.RGB = RGB(0, 255, 0)
            .Transparency = 0
            .Solid
        End With
    TG
        End Sub

Bonjour Snowkite, le forum,

Un essai avec le classeur TEST COULEUR YYY FORME PAR RAPPORT A V4

  • Il faut coller le code dans le module de la feuille YYY
  • Le classeur Macro colorier-une-forme-en-fonction-de-la-valeur-d-une-cellule-V4 doit également être ouvert
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim wb As Workbook
  Set wb = Workbooks("macro-colorier-une-forme-en-fonction-de-la-valeur-d-une-cellule-v4.xlsm")

 If Not Application.Intersect(Target, Me.Range("B1")) Is Nothing Then
  Cancel = True

    With wb.Sheets("YYY").Range("B1")
     .Value = Target.Value
    End With

    With wb.Sheets("GLOBAL")
     With .Shapes("YYY")
        .Visible = msoTrue
         If Not wb.Sheets("YYY").Range("B2") = "" Then .Fill.ForeColor.RGB = RGB(255, 0, 0)
         If Not wb.Sheets("YYY").Range("B3") = "" Then .Fill.ForeColor.RGB = RGB(255, 192, 0)
         If Not wb.Sheets("YYY").Range("B4") = "" Then .Fill.ForeColor.RGB = RGB(0, 255, 0)
         .Fill.Transparency = 0
         .Fill.Solid
      End With
    End With
  End If
End Sub
3downloads.zip (25.73 Ko)

Cordialement,

Rechercher des sujets similaires à "macro automatique suite changement valeur liee formule"