Microsoft 365 SI remplissage cellule (MFC) ALORS transposer la réponse dans une colonne

Chaine

XLDnaute Nouveau
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
 

Pièces jointes

  • Classeur1 - Copie.xlsm
    22.5 KB · Affichages: 5
Solution
Bonjour Chaine, natorp,

Pas besoin de VBA, formule en C2 copiée vers le bas :
Code:
=SOMMEPROD(N(D2:AF2<>AH2:BJ2))
elle renvoie le nombre de cellules différentes entre les plages D2:AF2 et AH2:BJ2 (29 cellules).

Si on veut n'avoir que des 1 et 0 on utilisera :
Code:
=SIGNE(SOMMEPROD(N(D2:AF2<>AH2:BJ2)))
Comme on le voit on se sert de la condition de la MFC, sa couleur n'a pas d'importance.

A+

job75

XLDnaute Barbatruc
Bonjour Chaine, natorp,

Pas besoin de VBA, formule en C2 copiée vers le bas :
Code:
=SOMMEPROD(N(D2:AF2<>AH2:BJ2))
elle renvoie le nombre de cellules différentes entre les plages D2:AF2 et AH2:BJ2 (29 cellules).

Si on veut n'avoir que des 1 et 0 on utilisera :
Code:
=SIGNE(SOMMEPROD(N(D2:AF2<>AH2:BJ2)))
Comme on le voit on se sert de la condition de la MFC, sa couleur n'a pas d'importance.

A+
 

Pièces jointes

  • Classeur1 - Copie(1).xlsm
    19.9 KB · Affichages: 5

Chaine

XLDnaute Nouveau
Forget Jeep Elite GIF by lnb_officiel

Mais voui !!
Pourquoi j'y ai pas pensé 😅.
Je suis un vrai shadoks parfois. Merci beaucoup Job75. 😉
 

Discussions similaires

Réponses
1
Affichages
638

Statistiques des forums

Discussions
298 814
Messages
1 971 985
Membres
203 580
dernier inscrit
Phinks