XL 2010 lister les mfc d'une feuille

apicius46

XLDnaute Junior
Bonjour à tous,

Je souhaiterai savoir comment faire pour lister les MFC d'une feuille ou comment les "exporter" vers une feuille de calcul par exemple.

Par ailleurs, par hasard, n'est pas possible "d'importer" via une feuille toutes les MFC que l'on a mettre.
J'en ai plus de 300..

Merci de votre aide.
Sportivement
Apicius
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

apicius46
Sortie du tiroir de mes archives anglophones
VB:
Public Sub ListAllCF()
' List all conditional formatting on the current sheet.  Use for troubleshooting.

    Dim cf As Object ' This can multiple types such as FormatCondition/UniqueValues/Top10/AboveAverage/...
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Debug.Print "Applies To", "Type", "Formula", , "Bold", "Int. Color", "StopIfTrue"
    For Each cf In ws.Cells.FormatConditions
        Debug.Print cf.AppliesTo.Address,
        Select Case cf.Type 'List of Types:  https://docs.microsoft.com/en-us/office/vba/api/excel.xlformatconditiontype
            Case 1, 2, xlExpression
                Debug.Print "Expression", cf.Formula1, cf.Font.Bold, cf.Interior.Color, cf.StopIfTrue
            Case 8, xlUniqueValues
                Debug.Print "UniqueValues", IIf(cf.DupeUnique = xlUnique, "xlUnique", "xlDuplicate"), , cf.Font.Bold, cf.Interior.Color, cf.StopIfTrue
            Case 5, xlTop10
                Debug.Print "Top10", IIf(cf.TopBottom = xlTop10Top, "Top ", "Bottom ") & cf.Rank & IIf(cf.Percent, "%", ""), , cf.Font.Bold, cf.Interior.Color, cf.StopIfTrue
            Case 12, xlAboveAverageCondition
                Debug.Print "AboveAverage", IIf(cf.AboveBelow = xlAboveAverage, "Above Average", IIf(cf.AboveBelow = xlBelowAverage, "Below Average", "Other Average")), , cf.Font.Bold, cf.Interior.Color, cf.StopIfTrue

            '--- Add your own code to support what you want to see for other types.
            Case 3, xlColorScale
                Debug.Print "ColorScale..."
            Case 4, xlDatabar
                Debug.Print "Databar..."
            Case Else
                Debug.Print "Other Type=" & cf.Type

        End Select
    Next cf
    Debug.Print ws.Cells.FormatConditions.Count & " rules on " & ws.Name
End Sub
NB: Facilement adaptable si tu veux le résultat dans une feuille.
 

Staple1600

XLDnaute Barbatruc
Re

Cela doit fonctionner mais le résultat s'affiche dans VBE.
Il faut comme je le disais adapter le code.
(Ce que je vais pas tarder à faire dès que je serais devant un Excel supérieur à XL2003)
 
Dernière édition:

apicius46

XLDnaute Junior
Ok. Pour le VBE, je connais rien. Je vais donc t'envoyer Mon document de travail. Cela t'aidera peut être. L'objectif c'est de regarder calendrier 2019.
Dans feuil2 ce sont les MFC que je dois enregistrer pour colorer les cellule dans le Calendrier 2019.
Merci d'avance
 

Pièces jointes

  • Calendrier Tableau VitaSportS 2019-2020.xlsx
    380.3 KB · Affichages: 8

apicius46

XLDnaute Junior
Bonjour,
Je relance ce post avec des problèmes de MFC, qui je sais ne sont pas simple à résoudre. Visiblement Excel ne les gères pas bien et j'en ai beaucoup avec la même formule. si vous avez des solutions je suis preneur.
j'explique mon organisation.
Dans l'onglet BDD se trouve l'ensemble des données.
Se trouve dans cette feuille, 4 période par trimestre de données avec l'educateur (Educateur1T,Educateur2T...)
Les dates correspondantes aux périodes du trimestre.
Les déplacements correspondants avec les couleurs

Entrainement
Compétition
Cross
TAP_Conches
MAILISO_MN
MAILIS_ACEM
MAILIS_ETE

Puis les Heures1T, Heures2T et KM1T,KM2T......
Les Jours fériés et vancances scolaires.

Le tout étant de pouvoir afficher dans le calendrier 2020-2021 par éducateur les jours heures effectuées et avec le code couleur permettre de connaitre les taches effectuées.
Sauf que notre association s'agrandit petit à petit et j'ai du rajouter des colonnes qui ne sont plus pris en compte et pose problème malgré que les formules soient bonnes:
2 exemple:

le 1er doit être en rose clair, le deuxième doit être en bleue clair...
SOMMEPROD((Educateur3T=$O$2:$Z$2)*(Dates3T=$N4)*(Déplacement3T=MAILIS_ETE)*(KM3T=$P$4))
SOMMEPROD((Educateur3T=$O$2:$Z$2)*(Dates3T=$N4)*(Déplacement3T=MAILISO_MN)*(KM3T=$P4))

Comment faire pour réparer les mfc cassés?
Quelle solution autre auriez vous à me proposer en solution?
Je cherche une solution fiable et reproductible même si j'ajoute des colonnes pour des éducateurs.


Merci de votre aide. Nos bénévoles et salariés vous remercient par avance.
Apicius
 

Pièces jointes

  • Essai calendrier.xlsx
    192.7 KB · Affichages: 7

apicius46

XLDnaute Junior
Bonjour JHA,
Merci de ta réponse rapide, mais je souhaite comprendre ta logique.

Petit point pour tous, avant je mets en place le calendrier après 1904 pour être en 2020 et non 2016...

Ta formule que tu rajoutes en ligne 3 sert à quoi pour la production de la MFC et colorise les cellules nécessaires ?
Mon problème :
Par ailleurs, Victor se colorise de W à Z mais pas de O à V alors que les formules sont bonnes... Ce sont les endroits ou j'ai rajouté des colonnes. Colonnes que je devrais rajouter à chaque mois pour augmenter le nombre d'éducateurs.
Voir le PJ

Merci d'avance
 

Pièces jointes

  • Copie de Essai calendrier-1.xlsx
    199.9 KB · Affichages: 4

JHA

XLDnaute Barbatruc
Bonjour à tous,

Le nombre de colonnes entre les dates ne sont pas identiques, donc pour les MFC je dois repérer où sont les mois, j'ai donc ajouté la ligne 3 afin de les repérer et de mettre la plage complète du tableau pour la MFC.

Je n'ai modifié que les MFC des dates, et les formules des colonnes avec des dates pour le reste, je n'ai rien regardé.

Pour ton histoire de calendrier 1904, je n'ai rien compris.


JHA
 

apicius46

XLDnaute Junior
Merci JHA,

Donc en fait, tu m'a bien aidé sur une partie de réponse pour repérer les MFC par colonne. C'est ce qui poserai problème ?
J'ai du mal m'exprimer, et donc mon problème est sur la formule que j'ai en ex ci-dessous :
Cette formule est bonne et correspond aux attentes mais ne se colorise pas suite aux bons repères de colonne d'où mon gros problème.
Du coup dans cette logique, est-il possible d'utiliser ton système pour Repérer les colonnes à colorier pour après mettre la formule et ainsi colorier les cellules et que ça fonctionne sans soucis ? (en fait c'est la ou les correspondances de date avec le calendrier sont nécessaire pour qu'il fonctionne en 2020...c'est juste un petit point info)

J'ai tenté d'imiter ta logique pour la MFC en rajoutant une ligne en 3 et vérifier les heures puis inclure la formule MFC en O6 mais cela ne fonctionne pas. Quelle est mon erreur?
En O6 MFC:
=ET(O$3=VRAI;SOMMEPROD((Educateur3T=$O$4)*(Dates3T=$N6)*(Déplacement3T=MAILIS_ETE)*(KM3T=$P$6))) s'applique en =$O$6:$P$36

Les colonnes O15; P15; O23; P23; O24; P24 devraient se coloriser en rose (comme ceux de la colonne Y et Z).

Je galère sans trouver de solution...
Merci d'avance



=SOMMEPROD((Educateur3T=$O$2:$Z$2)*(Dates3T=$N4)*(Déplacement3T=MAILIS_ETE)*(KM3T=$P$4))
 

Pièces jointes

  • Copie de Essai calendrier-1.xlsx
    212.3 KB · Affichages: 3

apicius46

XLDnaute Junior
Bonjour JHA,
Merci de ton aide précieuse sans laquelle ca ne fonctionnerai pas.
Avec ta formule index et ta recherche qui se simplifie sur tout le mois c'est top.
Je vais vérifier que tout fonctionne et faire des ajustement pour optimiser ta formule qui fonctionne.

Merci, Merci Merci.
Je m'en vais aussi soutenir Excel download...
Merci JHA
 

Dudu2

XLDnaute Barbatruc
Bonjour apicius46, JHA,

J'ai appris un truc dans cette histoire, c'est que les formules de JHA dans les MFC de Type 2 (xlExpression) sont des formules Matricielles ! Et ça c'est une nouveauté pour moi. J'ai d'ailleurs créé un sujet à ce propos car ça me pose problème pour un outil que j'ai créé pour manipuler les MFC.

Je voulais signaler quand même à apicius46 que parmi les 279 MFC présentes (ça fait quand même beaucoup... trop) dans la feuille Calendrier 2020-2021, quelques formules de MFC de Type 2 contiennent des #REF!.

2020-08-25_132348.jpg


VB:
Sub a()
    Dim S As String
    Dim i As Integer
   
    For i = 1 To ActiveSheet.Cells.FormatConditions.Count
        With ActiveSheet.Cells.FormatConditions(i)
            If .Type = 2 Then
                If InStr(.Formula1, "#REF!") Then
                    If Len(S) Then S = S & vbCrLf
                    S = S & _
                        "MFC #" & i & ", Formula1 = " & .Formula1
                End If
            End If
        End With
    Next i
   
    If Len(S) = 0 Then S = "Aucun #REF! trouvé en MFC Type 2"
    S = ActiveSheet.Cells.FormatConditions.Count & " MFC examinées." & vbCrLf & S
    MsgBox S
End Sub
 
Dernière édition:

apicius46

XLDnaute Junior
Bonjour Dudu2, JHA et à tous.
Oui en fait ce que j'ai donné c'était un doc de travail que j'ai extrai de mon doc, donc les #REF était des liens corrompus mais fonctionnel (pour la confidentialité des données).
JHA m'a permis de simplifier toutes les MFC et grâce à ta macro de test j'ai actuellement 177 MFC opérationnelle.
Donc la formule de JHA m'a permis d'économiser et de rendre plus facile, propre le travail.
Maintenant si je pouvez avec une macro pour exporter sur une feuille Excel, les lister, les imprimer toutes les MFC, ca m'aiderai et on ne trouve pas de macro disponible sur le net. J'ai pourtant chercher et j'ai pas eu de réponse en ce sens. (D'ailleurs bcp pose cette question sans réponse...)

Cette formule est magique:
=INDEX(Déplacement3T;EQUIV($N5&SI(O$4="Séance";N$3;O$3);Dates3T&Educateur3T;0))="TAP_Conches"


Merci à tous les deux,
Cordialement
Api
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 214
Membres
103 158
dernier inscrit
laufin