Copier/coller avec couleur mais pas mfc
Bonsoir tout le monde
voila dans le classeur joint j'ai une feuille avec une mise en forme conditionnelle
et une macro archiver, le probleme que j'ai c'est que j'aimerais archiver les couleur mais pas les mise en forme conditionnelle et je n'y arrive pas.
Quelqu'un saurait-il comment modifier cette macro pour y arriver?
merci
https://www.excel-pratique.com/~files/doc2/mfc.xls
cordialement
Bonjour à tous
j'ai déjà fait ça pour quelqu'un, la macro est issue de celle de Laurent Longre
Cette macro ne fonctionne que sur des versions < 2007
elle se base sur une fonction qui renvoie l'index de la MFC qui est appliquée mais ne peut fonctionner en aucun cas en dehors d'une macro. On ne peut l'utiliser dans une formule car un désagrément d'excel fait évoluer les formules des MFC selon la cellule active et non pas la cellule elle même ce qui oblige à sélectionner les cellules.
ceci dit : voici la fonction
Function quelle_MFC(cellule As Range) As Byte
Dim fc As FormatCondition, F1, F2
Dim c As Range, num As Byte, q As Byte
Set c = Cells.Find(Empty)
cellule.Select
num = 0: q = 0
For Each fc In Selection.FormatConditions ' on scrutte toute les MFC
num = num + 1
c.FormulaLocal = fc.Formula1: F1 = c ' Si c'est une formule, mise en place de cette formule dans une cellule, resultat Vrai ou Faux
If fc.Type = xlCellValue Then ' si le type de MFC est : La valeur de la cellule (ce n'est pas une formule)
Select Case fc.Operator
Case xlBetween, xlNotBetween:
c.FormulaLocal = fc.Formula2: F2 = c
If fc.Operator = xlBetween Then
If cellule >= F1 And cellule <= F2 Then q = 1
If fc.Operator = xlNotBetween Then If ActiveCell < F1 Or ActiveCell > F2 Then q = 1
End If
Case xlEqual
If ActiveCell = F1 Then q = 1
Case xlGreater
If ActiveCell > F1 Then q = 1
Case xlGreaterEqual
If ActiveCell >= F1 Then q = 1
Case xlLess
If ActiveCell < F1 Then q = 1
Case xlLessEqual
If ActiveCell <= F1 Then q = 1
Case xlNotEqual
If ActiveCell <> F1 Then q = 1
End Select
Else
If F1 = True Then q = 1
End If
If q = 1 Then
quelle_MFC = num
Exit For
End If
Next fc
c.Clear
End FunctionVoici une macro qui te permet de transformer les MFC en couleur Figée mais uniquement sur la feuille active, puisqu'il il faute selectionner les cellules
Sub Mfc_Figée()
Dim maplage As Range, i As Byte, c As Range
Set maplage = ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions)
For Each c In maplage
c.Select
i = quelle_MFC(c)
If i > 0 Then c.Interior.ColorIndex = c.FormatConditions(i).Interior.ColorIndex
c.FormatConditions.Delete
Next
End SubBonsoir,
Un grand merci, ça fonctionne bien, malheureusement, ça me mets un défaut de mémoire insuffisante car c'est un gros fichier, je vais chercher une autre façon d'arriver a ce que je veux.
En tout cas, je garde ta solution au chaud car elle me servira pour d'autre fichier.
encore merci
Cordialement