Bonjour à tous,
Je sollicite votre aide.
J'ai réalisé une comparaison de données et souhaite suivre, dans une colonne <INDICATEUR>, si dans la ligne des données ne sont pas identiques (misent en surbrillance en JAUNE).
En colonnes C:BJ :
- des données comparées (réf A à comparer avec réf B)
- avec mise en surbrillance Jaune (fond de cellule) appliqué via une MFC si les valeurs diffèrent (si réf A <> réf B alors jaune sinon sans mise en forme)
En colonne C <Indicateur> :
- Colonne de résultat, je souhaite savoir si dans la ligne on retrouve une cellule en surbrillance Jaune (fond de cellule)
- Résultat attendu : si JAUNE alors 1 sinon O dans la colonne INDICATEUR
N’ayant pas trouvé de formules répondant à ce besoin, je me suis tournée vers le VBA. Mais mes connaissances sont limitées.
J’ai testé le code ci-dessous. Mais,
- Le résultat de ce code est donné dans un MsgBox car je ne sais pas lui demander d’afficher un résultat dans une colonne donnée (peut-être avec « Range »).
- Mon 2éme problème, c’est que la MFC n’applique pas de véritable code couleur sur le cellule, je m’explique :
En recherche le code via ce VBA (n°2) j’obtiens :
- Si j’applique le JAUNE avec la couleur de remplissage (menu polie>remplissage(sceau)) j’obtiens le code 65535
- Si c’est une cellule surbrillée par un Mise en Forme Conditionnelle, j’obtiens 16777215 (soit le même code qu’une cellule sans remplissage)
Quelle pourrait-être la solution pour identifier les lignes misent en surbrillance par une MFC ?
Et Comment transposer la réponse dans la colonne INDICATEUR.
Merci d’avance pour votre aide.
VBA (n°1)
Sub Rechercher_Format_Cellule()
Dim LeCellFormat As CellFormat
Dim Trouve As Range, Adr As String
Dim Sh As Worksheet, Rg As Range
'Nom feuille à adapter
Set Sh = Worksheets("Feuil1")
Set LeCellFormat = Application.FindFormat
With LeCellFormat
.Clear
.Interior.Color = Sh.Range("C1").Interior.Color
End With
With Sh
'Définir la plage de cellules
Set Rg = .Range("D2:BJ10")
End With
With Rg
Set Trouve = .Find(What:="", _
Searchdirection:=xlNext, _
SearchFormat:=True)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
With Trouve
MsgBox Trouve.Address
End With
Set Trouve = .Find(What:="", _
After:=Trouve, SearchFormat:=True)
Loop Until Trouve.Address = Adr Or Trouve Is Nothing
End If
End With
End Sub
'note NE FONCTIONNE PAS AVEC MFC
VBA (n°2)
Sub Couleur_trouver()
'Ecrit le code couleur de la cellule donnée dans une cellule choisie
X = Range("ah2").Interior.Color
'cellule de destination (numéro de la couleur, mais pas index ni RGB) :
Range("a2") = X
End Sub
Je sollicite votre aide.
J'ai réalisé une comparaison de données et souhaite suivre, dans une colonne <INDICATEUR>, si dans la ligne des données ne sont pas identiques (misent en surbrillance en JAUNE).
En colonnes C:BJ :
- des données comparées (réf A à comparer avec réf B)
- avec mise en surbrillance Jaune (fond de cellule) appliqué via une MFC si les valeurs diffèrent (si réf A <> réf B alors jaune sinon sans mise en forme)
En colonne C <Indicateur> :
- Colonne de résultat, je souhaite savoir si dans la ligne on retrouve une cellule en surbrillance Jaune (fond de cellule)
- Résultat attendu : si JAUNE alors 1 sinon O dans la colonne INDICATEUR
N’ayant pas trouvé de formules répondant à ce besoin, je me suis tournée vers le VBA. Mais mes connaissances sont limitées.
J’ai testé le code ci-dessous. Mais,
- Le résultat de ce code est donné dans un MsgBox car je ne sais pas lui demander d’afficher un résultat dans une colonne donnée (peut-être avec « Range »).
- Mon 2éme problème, c’est que la MFC n’applique pas de véritable code couleur sur le cellule, je m’explique :
En recherche le code via ce VBA (n°2) j’obtiens :
- Si j’applique le JAUNE avec la couleur de remplissage (menu polie>remplissage(sceau)) j’obtiens le code 65535
- Si c’est une cellule surbrillée par un Mise en Forme Conditionnelle, j’obtiens 16777215 (soit le même code qu’une cellule sans remplissage)
Quelle pourrait-être la solution pour identifier les lignes misent en surbrillance par une MFC ?
Et Comment transposer la réponse dans la colonne INDICATEUR.
Merci d’avance pour votre aide.
VBA (n°1)
Sub Rechercher_Format_Cellule()
Dim LeCellFormat As CellFormat
Dim Trouve As Range, Adr As String
Dim Sh As Worksheet, Rg As Range
'Nom feuille à adapter
Set Sh = Worksheets("Feuil1")
Set LeCellFormat = Application.FindFormat
With LeCellFormat
.Clear
.Interior.Color = Sh.Range("C1").Interior.Color
End With
With Sh
'Définir la plage de cellules
Set Rg = .Range("D2:BJ10")
End With
With Rg
Set Trouve = .Find(What:="", _
Searchdirection:=xlNext, _
SearchFormat:=True)
If Not Trouve Is Nothing Then
Adr = Trouve.Address
Do
With Trouve
MsgBox Trouve.Address
End With
Set Trouve = .Find(What:="", _
After:=Trouve, SearchFormat:=True)
Loop Until Trouve.Address = Adr Or Trouve Is Nothing
End If
End With
End Sub
'note NE FONCTIONNE PAS AVEC MFC
VBA (n°2)
Sub Couleur_trouver()
'Ecrit le code couleur de la cellule donnée dans une cellule choisie
X = Range("ah2").Interior.Color
'cellule de destination (numéro de la couleur, mais pas index ni RGB) :
Range("a2") = X
End Sub