Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

extraire les MEFC

  • Initiateur de la discussion Initiateur de la discussion CB60
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CB60

XLDnaute Barbatruc
Bonjour,
Peut on extraire toutes les mises en forme conditionnelle d'un classeur sur une feuille.
Genre:
nom de la feuille, le format et la cellule concerné.
Merci
Bruno
 
Re : extraire les MEFC

Bonjour,

Je crains fort que par formules ce soit impossible.
En effet, aucune formule ne permet de reconnaître un format de cellule, sauf les XL4.

Une piste à suivre : touche clavier F5 - Cellules - cocher "formats conditionnels" - OK.
Toute les cellules avec une MFC sont sélectionnées, mais il faut le faire feuille par feille.

Après, ... ?

mjo
 
Re : extraire les MEFC

re
grace à ton exemple j'arrive a retrouver toutes les cellules ayant un format conditionnel, mais cela ne m'extrait pas la formule ou condition de ce format ( c'est déjà un premier pas.)
Je joint la macro:
Sub RechercheMEFC()
'
Dim cellule As Range
Dim ws As Worksheet
Dim Ligne&
'
Application.ScreenUpdating = False
On Error Resume Next
Ligne = 2
Sheets("ListeF").Select
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "ListeF" Then
For Each cellule In ws.Cells.SpecialCells(xlCellTypeAllFormatConditions)
Cells(Ligne, 1) = ws.Name
Cells(Ligne, 2) = cellule.Address(0, 0)
Cells(Ligne, 3) = "'" & cellule.FormulaLocal
Cells(Ligne, 4) = cellule.Value
Ligne = Ligne + 1
Next cellule
End If
Next ws
Application.ScreenUpdating = True
End Sub
 
Re : extraire les MEFC

bonsoir Bruno, bonsoir Michel


tu peux tester cette procédure.


Code:
Dim Fc As FormatCondition
Dim Op As String, Resultat As String
Dim Cell As Range
 
For Each Cell In ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
    For Each Fc In Cell.FormatConditions
        Resultat = Fc.Formula1
 
        Select Case Fc.Operator
            Case xlBetween
                Op = "est Comprise entre "
                Resultat = Resultat & " et " & Fc.Formula2
            Case xlEqual: Op = "est égal à "
            Case xlGreater: Op = "est supérieur à "
            Case xlGreaterEqual: Op = "est supérieur ou égal à "
            Case xlLess: Op = "est inférieur à"
            Case xlLessEqual: Op = "est inférieur ou égal à "
            Case xlNotBetween
                Op = "est non comprise entre"
                Resultat = Resultat & " et " & Fc.Formula2
            Case xlNotEqual: Op = "est différent de "
        End Select
 
        MsgBox "Cellule: " & Cell.Address & " " & Op & " " & Resultat
    Next Fc
Next Cell


Bonne soirée
MichelXld
 
Dernière édition:
Re : extraire les MEFC

Bonsoir Bruno, mjo

pour les détails de la MFC:

Cells(Ligne, 5) = cellule.FormatConditions.Count
te donne le nombre de conditions
et par exemple
Cells(Ligne, 6) = cellule.FormatConditions(1).Interior.ColorIndex
te donne la coleur de la condition 1
 
Re : extraire les MEFC

Re
Merci Michelxld et Michel_m
Voici la macro de Michelxld (avec une petite modif)
Sub essaimefc()
Dim Fc As FormatCondition
Dim Operator As String, Resultat As String
Dim Cell As Range

For Each Cell In ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
For Each Fc In Cell.FormatConditions
Resultat = Fc.Formula1

Select Case Fc.Formula1 'Operator
Case xlBetween
Operator = "est Comprise entre "
Resultat = Resultat & " et " & Fc.Formula2
Case xlEqual: Operator = "est égal à "
Case xlGreater: Operator = "est supérieur à "
Case xlGreaterEqual: Operator = "est supérieur ou égal à "
Case xlLess: Operator = "est inférieur à"
Case xlLessEqual: Operator = "est inférieur ou égal à "
Case xlNotBetween
Operator = "est non comprise entre"
Resultat = Resultat & " et " & Fc.Formula2
Case xlNotEqual: Operator = "est différent de "
End Select

MsgBox "Cellule: " & Cell.Address & " " & Operator & " " & Resultat
Next Fc
Next Cell
End Sub

et pour michel_m les deux fonctions supplementaires me donne encore plus d'information mais ne me fais pas ressortir les formules.
Il me faut donc réussir a remplacer les MSBox par l'écriture des valeurs dans ma feuille.
Merci à vous deux
Bruno
 
Re : extraire les MEFC

Bonsoir Bruno, Michel et Michel

je sais pas si j'ai bien compris, mais peut être remplacer la ligne de code de la msgbox par celle, ci dessous pour insrire le résultat colonne G :

Code:
Range("G65536").End(xlUp).Offset(1, 0).Value = "Cellule: " & Cell.Address & " " & Operator & " " & Resultat

bonne soirée
@+
 
Re : extraire les MEFC

Re Bruno, Michel et Michel

Méfie toi, car je crois bien qu il faut aussi considérer le type (XlExpression ou xlCellValue), si je ne me suis pas trompé ca bogue notamment lors de l'utilisation de fourchette de valeurs. A creuser...

bonne soirée.
@+
 
Re : extraire les MEFC

re
la macro se modifie et commence à prendre tournure, mais lorsque je veux travailler sur une autre feuille, elle ne me resort pas les formules.
Ou est l'erreur?
Macro "Recherchemf"
Sub RecherchemF()
'
Dim cellule As Range
Dim ws As Worksheet
Dim Fc As FormatCondition
Dim Operator As String, Resultat As String
Dim Ligne&
'
Application.ScreenUpdating = False
On Error Resume Next
Ligne = 2
Sheets("ListeF").Select
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "ListeFormules" Then
For Each cellule In ws.Cells.SpecialCells(xlCellTypeAllFormatConditions)
Resultat = Fc.Formula1
Select Case Fc.Formula1 'Operator
Case xlBetween
Operator = "est Comprise entre "
Resultat = Resultat & " et " & Fc.Formula2
Case xlEqual: Operator = "est égal à "
Case xlGreater: Operator = "est supérieur à "
Case xlGreaterEqual: Operator = "est supérieur ou égal à "
Case xlLess: Operator = "est inférieur à"
Case xlLessEqual: Operator = "est inférieur ou égal à "
Case xlNotBetween
Operator = "est non comprise entre"
Resultat = Resultat & " et " & Fc.Formula2
Case xlNotEqual: Operator = "est différent de "
End Select
'Range("a65536").End(xlUp).Offset(1, 0).Value = ws.Name '' & " " & Operator & " " & Resultat
' Range("a65536").End(xlUp).Offset(0, 1).Value = Cell.Address
'Range("a65536").End(xlUp).Offset(0, 2).Value = Operator & " " & Resultat
Cells(Ligne, 1) = ws.Name
Cells(Ligne, 2) = cellule.Address(0, 0)
Cells(Ligne, 3).Value = Cell.Address & " " & Operator & " " & Resultat
Cells(Ligne, 4) = cellule.Value
Ligne = Ligne + 1
Next cellule
End If
Next ws
Application.ScreenUpdating = True
End Sub
 

Pièces jointes

Re : extraire les MEFC

bonjour à tous
bonjour MichelXld.
Le but que je recherche c'est d'avoir une feuille "listef" et depuis cette feuille lancer la macro qui regarde tout le classeur afin de ressortir toutes les mises en forme conditionnelle sur cette feuille "listef".
il faut lire "listef" et non "liste formule" (modification du classeur avant de le mettre sur le post).
merci
Bruno
 
Re : extraire les MEFC

Bonjour Bruno, MichelXld

Avez vous lu mon poste d'hier 20h41 ou j'évoque le type

Méfie toi, car je crois bien qu il faut aussi considérer le type (XlExpression ou xlCellValue), si je ne me suis pas trompé ca bogue notamment lors de l'utilisation de fourchette de valeurs. A creuser...

Me serais je fourvoyé....ou n'aurais je point tout compris...Possible... mais encore une anomalie ce matin...

je regarde dans la journée, j'espère avoir le temps.

Bonne journée avous
@+
 
Re : extraire les MEFC

Bonjour Pierrot
Il faut que tu sache que moi les macros, c'est un langage que je ne maitrise pas correctement (malgré l'achat d'un bouquin de J walkenbach) ça viens tout doucement, j'arrive à adapter pas mal de code trouver sur le net à mes besoins. J'avais bien lus ton message d'hier soir mais je ne savais pas quoi faire par rapport à ta remarque.
 
Re : extraire les MEFC

Re Bruno, MichelXld

Oui Bruno pas de problème, je vais essayer d'expliquer... Comme tu le sais au départ dans les formats conditionnels tu choisis soit "la valeur de la cellule est" ce qui correspond en VBA à l'argument TYPE (xlCellValue) qui renvoie le type de donnée long 1, soit "La formule est" qui correspond en VBA à l'argument TYPE (xlExpression), qui renvoie 2.

J'ai modifiée un peu une des macros de ton classeur :

Code:
Sub TestMFC()
Dim Fc As FormatCondition
Dim Operator As String, Resultat As String
Dim Cell As Range
Dim cellule As Range
Dim ws As Worksheet
Dim Ligne&, MonType As Long

For Each ws In Worksheets
If ws.Name <> "ListeF" Then
For Each Cell In ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
For Each Fc In Cell.FormatConditions
If Fc.Type = 1 Then

Resultat = Fc.Formula1

Select Case Fc.Operator
Case xlBetween
Operator = "est Comprise entre "
Resultat = Resultat & " et " & Fc.Formula2
Case xlEqual: Operator = "est égal à "
Case xlGreater: Operator = "est supérieur à "
Case xlGreaterEqual: Operator = "est supérieur ou égal à "
Case xlLess: Operator = "est inférieur à"
Case xlLessEqual: Operator = "est inférieur ou égal à "
Case xlNotBetween
Operator = "est non comprise entre"
Resultat = Resultat & " et " & Fc.Formula2
Case xlNotEqual: Operator = "est différent de "
End Select
Range("a65536").End(xlUp).Offset(1, 0).Value = Cell.Address
Range("a65536").End(xlUp).Offset(0, 1).Value = Operator & " " & Resultat
Else
Range("a65536").End(xlUp).Offset(1, 0).Value = Cell.Address
Range("a65536").End(xlUp).Offset(0, 1).Value = "La formule est : " & Fc.Formula1
End If
'Range("a65536").End(xlUp).Offset(0, 2).Value = 'Operator & " " & Resultat
'MsgBox "Cellule: " & Cell.Address & " " & Operator & " " & Resultat
Next Fc
Next Cell
End If
Next ws
End Sub

Maintenant je sais pas, je suis peut être à coté de la plaque...

Ce qui m'étonne aussi, c'est que le grand maître MichelXLD, n'ais pas percuté sur ma remarque, lui qui est toujours de très très bons conseils...

Bonne journée à tous.
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
302
Réponses
6
Affichages
191
Réponses
3
Affichages
230
Réponses
3
Affichages
209
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…