Comment pourrais-je faire que le changement de la couleur d'une cellule soit
pris en compte comme un evenement ?
pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme
un evenement sur une cellule.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
PMO
Bonjour,
Voici une approche avec le code ci-dessous. Le principe est de charger un tableau (à l'ouverture du classeur par Workbook_Open) des différentes valeurs de couleur de la plage concernée. Puis, chaque fois qu'on change de sélection, on balaie toute la plage pour voir si une couleur a changé. Le tableau prend alors les nouvelles valeurs de couleur. Il est IMPERATIF de changer la valeur de la constante FEUILLE par le nom de votre feuille puis de lancer la procédure Workbook_Open avant d'effectuer un test.
*********** Option Explicit Const FEUILLE As String = "test" Public T As Variant '_____________________ Private Sub Workbook_Open() Call MonRange End Sub '_____________________ Private Sub Workbook_SheetSelectionChange _ (ByVal Sh As Object, ByVal Target As Range) Dim i& Dim j& If Sh.Name <> FEUILLE Then Exit Sub For i& = 1 To UBound(T, 1) For j& = 1 To UBound(T, 2) If Range(Cells(i&, j&), Cells(i&, j&)) _ .Interior.Color <> T(i&, j&) Then MsgBox "Ligne:" & i& & vbTab & "Colonne:" _ & j&, , "Couleur changée" End If Next j& Next i& Call MonRange End Sub '_____________________ Sub MonRange() Dim R As Range Dim i& Dim j& With Sheets(FEUILLE).UsedRange ReDim T(1 To .Row + .Rows.Count - 1, _ .Column + .Columns.Count - 1) End With Sheets(FEUILLE).Select Set R = Sheets(FEUILLE).Range(Cells(1, 1), _ Cells(UBound(T, 1), UBound(T, 2))) For i& = 1 To UBound(T, 1) For j& = 1 To UBound(T, 2) T(i&, j&) = R.Cells(i&, j&).Interior.Color Next j& Next i& End Sub ***********
Cordialement. -- PMO Patrick Morange
Bonjour,
Comment pourrais-je faire que le changement de la couleur d'une cellule soit pris en compte comme un evenement ? pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme un evenement sur une cellule.
Merci de votre reponse.
IsaS
Bonjour,
Voici une approche avec le code ci-dessous.
Le principe est de charger un tableau (à l'ouverture du classeur par
Workbook_Open)
des différentes valeurs de couleur de la plage concernée.
Puis, chaque fois qu'on change de sélection, on balaie toute la plage pour
voir
si une couleur a changé. Le tableau prend alors les nouvelles valeurs de
couleur.
Il est IMPERATIF de changer la valeur de la constante FEUILLE par le nom de
votre feuille
puis de lancer la procédure Workbook_Open avant d'effectuer un test.
***********
Option Explicit
Const FEUILLE As String = "test"
Public T As Variant
'_____________________
Private Sub Workbook_Open()
Call MonRange
End Sub
'_____________________
Private Sub Workbook_SheetSelectionChange _
(ByVal Sh As Object, ByVal Target As Range)
Dim i&
Dim j&
If Sh.Name <> FEUILLE Then Exit Sub
For i& = 1 To UBound(T, 1)
For j& = 1 To UBound(T, 2)
If Range(Cells(i&, j&), Cells(i&, j&)) _
.Interior.Color <> T(i&, j&) Then
MsgBox "Ligne:" & i& & vbTab & "Colonne:" _
& j&, , "Couleur changée"
End If
Next j&
Next i&
Call MonRange
End Sub
'_____________________
Sub MonRange()
Dim R As Range
Dim i&
Dim j&
With Sheets(FEUILLE).UsedRange
ReDim T(1 To .Row + .Rows.Count - 1, _
.Column + .Columns.Count - 1)
End With
Sheets(FEUILLE).Select
Set R = Sheets(FEUILLE).Range(Cells(1, 1), _
Cells(UBound(T, 1), UBound(T, 2)))
For i& = 1 To UBound(T, 1)
For j& = 1 To UBound(T, 2)
T(i&, j&) = R.Cells(i&, j&).Interior.Color
Next j&
Next i&
End Sub
***********
Cordialement.
--
PMO
Patrick Morange
Bonjour,
Comment pourrais-je faire que le changement de la couleur d'une cellule soit
pris en compte comme un evenement ?
pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme
un evenement sur une cellule.
Voici une approche avec le code ci-dessous. Le principe est de charger un tableau (à l'ouverture du classeur par Workbook_Open) des différentes valeurs de couleur de la plage concernée. Puis, chaque fois qu'on change de sélection, on balaie toute la plage pour voir si une couleur a changé. Le tableau prend alors les nouvelles valeurs de couleur. Il est IMPERATIF de changer la valeur de la constante FEUILLE par le nom de votre feuille puis de lancer la procédure Workbook_Open avant d'effectuer un test.
*********** Option Explicit Const FEUILLE As String = "test" Public T As Variant '_____________________ Private Sub Workbook_Open() Call MonRange End Sub '_____________________ Private Sub Workbook_SheetSelectionChange _ (ByVal Sh As Object, ByVal Target As Range) Dim i& Dim j& If Sh.Name <> FEUILLE Then Exit Sub For i& = 1 To UBound(T, 1) For j& = 1 To UBound(T, 2) If Range(Cells(i&, j&), Cells(i&, j&)) _ .Interior.Color <> T(i&, j&) Then MsgBox "Ligne:" & i& & vbTab & "Colonne:" _ & j&, , "Couleur changée" End If Next j& Next i& Call MonRange End Sub '_____________________ Sub MonRange() Dim R As Range Dim i& Dim j& With Sheets(FEUILLE).UsedRange ReDim T(1 To .Row + .Rows.Count - 1, _ .Column + .Columns.Count - 1) End With Sheets(FEUILLE).Select Set R = Sheets(FEUILLE).Range(Cells(1, 1), _ Cells(UBound(T, 1), UBound(T, 2))) For i& = 1 To UBound(T, 1) For j& = 1 To UBound(T, 2) T(i&, j&) = R.Cells(i&, j&).Interior.Color Next j& Next i& End Sub ***********
Cordialement. -- PMO Patrick Morange
Bonjour,
Comment pourrais-je faire que le changement de la couleur d'une cellule soit pris en compte comme un evenement ? pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme un evenement sur une cellule.
Merci de votre reponse.
IsaS
isabelle
bonjour IsaS,
si la couleur provient d'une MFC (mise en forme conditionnelle) il faut utilisé l'événemet Worksheet_Calculate. sinon utilise l'événement Worksheet_SelectionChange.
isabelle
Bonjour,
Comment pourrais-je faire que le changement de la couleur d'une cellule soit pris en compte comme un evenement ? pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme un evenement sur une cellule.
Merci de votre reponse.
IsaS
bonjour IsaS,
si la couleur provient d'une MFC (mise en forme conditionnelle) il faut utilisé l'événemet Worksheet_Calculate.
sinon utilise l'événement Worksheet_SelectionChange.
isabelle
Bonjour,
Comment pourrais-je faire que le changement de la couleur d'une cellule soit
pris en compte comme un evenement ?
pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme
un evenement sur une cellule.
si la couleur provient d'une MFC (mise en forme conditionnelle) il faut utilisé l'événemet Worksheet_Calculate. sinon utilise l'événement Worksheet_SelectionChange.
isabelle
Bonjour,
Comment pourrais-je faire que le changement de la couleur d'une cellule soit pris en compte comme un evenement ? pour l'instant j'ai essayé WorkSheet_Change mais ne le considère pas comme un evenement sur une cellule.