Bonjour,
J'aimerai savoir s'il existe une technique pour lister les différentes MFC d'un classeur, avec leurs différentes caractéristiques.
Cherché, désespérément, sans résultat probant.
Merci pour vos lumières.
Bonne journée,
Cordialement.
Bonjour,
J'aimerai savoir s'il existe une technique pour lister les différentes MFC d'un classeur, avec leurs différentes caractéristiques.
Cherché, désespérément, sans résultat probant.
Merci pour vos lumières.
Bonne journée,
Cordialement.
Bonjour,
Une bonne connaissance des fonctionnalités d'excel et l'enregistreur de macros fait le reste.
Pour sélectionner les cellules ayant une mise en forme conditionnelle, il existe une boîte de dialogue Atteindre (raccourci clavier F5)
Voir mes billets sur cette boîte de dialogue
- Excel – La boîte de dialogue « Atteindre »
- Comment atteindre rapidement les cellules contenant une formule dans Excel
En utilisant cette boîte de dialogue à l'aide de l'enregistreur de macro, on obtiendra cette ligne d'instruction
Comme il faut éviter la méthode Select, nous corrigerons par exemple par
Code : Sélectionner tout - Visualiser dans une fenêtre à part ActiveCell.SpecialCells(xlCellTypeAllFormatConditions).Select
Nous avons déjà là, un début de code qui nous renvoie dans la variable objet rngConditFormatting toutes les cellules ayant une mise en forme conditionnelle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub T() Dim sht As Worksheet Dim rngConditFormatting As Range Set sht = ThisWorkbook.Worksheets("V-Valeurs") Set rngConditFormatting = sht.Range("A1").SpecialCells(xlCellTypeAllFormatConditions) Debug.Print rngConditFormatting.Address Set rngConditFormatting = Nothing Set sht = Nothing End Sub
Il reste à parcourir cellule par cellule pour obtenir les propriétés utilisées pour cette mise en forme conditionnelle (voir enregistreur de macros)
Une fois que la procédure fonctionne pour une feuille, on l'utilise pour chaque feuille en faisant une boucle comme par exemple
Code de la fonction qui renverra un objet Range en fonction de l'argument pType (xlCellTypeAllFormatConditions pour ce qui nous concerne)
Exemple de la procédure qui l'invoque
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Function GetSpecialCells(oSheet As Worksheet, pType As XlCellType) As Range On Error Resume Next Set GetSpecialCells = oSheet.Range("A1").SpecialCells(pType) On Error GoTo 0 End Function
[EDIT]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub T() Dim sht As Worksheet Dim rngConditFormatting As Range For Each sht In ActiveWorkbook.Worksheets Set rngConditFormatting = GetSpecialCells(sht, xlCellTypeAllFormatConditions) If Not rngConditFormatting Is Nothing Then Debug.Print rngConditFormatting.Address(External:=True) Else Debug.Print "Pas de MFC dans la feuille " & sht.Name End If Next Set rngConditFormatting = Nothing Set sht = Nothing End Sub
Une erreur dans la procédure GetSpecialCells. En ligne 3, il faut avoir l'argument pType et pasxlCellTypeAllFormatConditions
Correction faite dans la procédure précédemment publiée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Function GetSpecialCells(oSheet As Worksheet, pType As XlCellType) As Range On Error Resume Next Set GetSpecialCells = oSheet.Range("A1").SpecialCells(pType) On Error GoTo 0 End Function
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Bonjour Philippe,
Merci pour la réponse, je regarde cela et te fais un retour.
Bonne fin de journée.
Cordialement.
re,
Merci, cela répond à la première partie de mon problème. Est-il possible d'obtenir la liste et le détail des différentes MFC ?
Ceci pour voir les redondances dues aux différents copier-coller et autres manip des utilisateurs.
Cordialement.
Bonjour,
Par rapport à mes explications, que vous manque t'il pour avancer.
Qu'avez-vous déjà écrit comme procédure depuis ma réponse et où avez-vous un problème ?
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Bonsoir,
le résultat de ces deux macros m'indique les plages sur lesquelles se trouvent des MFC. J'aimerai obtenir les caractéristiques de ces MFC ainsi que la ou les plages où elles s'appliquent.
J'ai tenté l'enregistreur de macro, mais il ne me renvoie rien.
Ma demande est peut être loufoque.
Cordialement.
PS: les deux liens de ton post ne sont pas valides.
Bonjour,
Effectivement, il y avait un problème. C'est maintenant arrangé. Merci de me l'avoir signaléPS: les deux liens de ton post ne sont pas valides.
Voir ci-dessous ce que me renvoie l'enregistreur de macros lors de la création d'une MFC avec comme règle Appliquer une mise en forme uniquement aux cellules qui contiennent mais il est vrai qu'ensuite une deuxième règle ne m'a donné aucun code (Excel 365)J'ai tenté l'enregistreur de macro, mais il ne me renvoie rien
Pour connaître le nombre de règles appliqué à une cellule, il faut utiliser la propriété Count de la collection FormatConditions
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub PutFormatCondition() Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, Formula1:="=50" Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority With Selection.FormatConditions(1).Font .Bold = True .Italic = False .Color = -16776961 .TintAndShade = 0 End With Selection.FormatConditions(1).StopIfTrue = False End Sub
Exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Debug.Print Range("C5").FormatConditions.CountIl faut donc lire chaque propriété possible de l'objet FormatCondition MFC (ex Font.Bold, Font.Italic, etc.)J'aimerai obtenir les caractéristiques de ces MFC ainsi que la ou les plages où elles s'appliquent.
Pour connaître la plage où elle s'applique, c'est la propriété AppliesTo
Philippe Tulliez
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier
Bonjour Philippe,
Merci pour les explications. J'ai tenté de les mettre en pratique mais, n'étant pas un foudre de guerre en VBA, j'atteins vite mes limites.
J'arrive bien à compter le nombre de MFC mais n'arrive pas à faire ressortir leur caractéristiques. Il semble que certaines de celles ci ne soit pas prises en compte par l'enregistreur de macro, donc difficile de tenter de les récupérer, du moins à mon niveau. (Cf macro 2 du fichier joint, tentative de MFC sur la plage D8:AH9)
Merci pour le temps passé, mais je laisse tomber, cela à l'air bien trop lourd à mettre en place pour l'utilisation escomptée.
Bonne continuation, encore merci pour les indications qui me serviront sans doute sur d'autres dossiers.
Cordialement.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager