IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Compter des cellules mises en forme par MFC


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut Compter des cellules mises en forme par MFC
    Bonjour à tous,

    JE suis trés embétté, voila plusieurs jours que je m'arrache les cheveux mais sans succés.

    Je n'arrive pas a compter des cellules mise en forme par MFC, j'ai téléchargé une mutitude de code et aucun fonctionne correctement à 100%, je me demande donc si oui ou non c'est possible?

    en gros j'ai un tableau disposant de ligne disons de 10 cellules chacune, sur cette ligne les cellule s'alterne en rouge ou rien (trés important car le rien reste une MFC... enfin je crois) a la fin de cette ligne j'aurais aimé une fonction qui compte le nombre de cellule colorié en rouge grâce à la MFC.

    J'ai fait une boucle qui parcoure la ligne pour compter, sur chaque cellule de la ligne elle teste la valeur du Colorindex grace a la fonction suivante, si la valeur retourner et égale a 3 (rouge: notre exemple) et bien je fait +1...

    JE vous fournis le code capable de retourner le numéro d'une couleur de MFC, mais ce dernier fonctionne quand il veux, des fois c'est rouge il retourne 0 des fois c'est vide il retourne 3.... les premiere ligne fonctionne... et je ne comprend vraiment plus rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Public Function CouleurMFC(RG As Range, Optional Mode As Byte = 0) As Variant
    Dim e As Long, i As Byte, LoTest As Boolean
    Dim LoMFC As FormatCondition
        Application.Volatile
        'boucle sur le nombre de condition(s)
        'Si pas de MFC .FormatConditions.Count renvoi 0
        For i = 1 To RG.FormatConditions.Count
            Set LoMFC = RG.FormatConditions(i)
            If LoMFC.Type = xlCellValue Then
            'tester le type de la formule entrée
                Select Case LoMFC.Operator
                Case xlEqual
                    LoTest = RG = Evaluate(LoMFC.Formula1)
                Case xlNotEqual
                    LoTest = RG <> Evaluate(LoMFC.Formula1)
                Case xlGreater
                    LoTest = RG > Evaluate(LoMFC.Formula1)
                Case xlGreaterEqual
                    LoTest = RG >= Evaluate(LoMFC.Formula1)
                Case xlLess
                    LoTest = RG < Evaluate(LoMFC.Formula1)
                Case xlLessEqual
                    LoTest = RG <= Evaluate(LoMFC.Formula1)
                Case xlNotBetween
                    LoTest = (RG < Evaluate(LoMFC.Formula1) Or RG > Evaluate(LoMFC.Formula2))
                Case xlBetween
                    LoTest = (RG >= Evaluate(LoMFC.Formula1)) And (RG <= Evaluate(LoMFC.Formula2))
                End Select
                If LoTest Then
                    'Peu ajouter d'autre format si nécessaire,
                    'comme la bordure, la police etc..
                    Select Case Mode
                    Case 0
                        CouleurMFC = LoMFC.Interior.ColorIndex
                    Case 1
                        CouleurMFC = LoMFC.Interior.Color
                    End Select
                    Exit Function
                End If
            End If
        Next i
        CouleurMFC = 0
    End Function
    help me please

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à lire sur les couleurs des MFC

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Merci kiki29 pour la réponse.

    Mais ca ne change rien, j'ai testé l'ensemble des codes de la page et aucun ne me retourne un résultat exploitable.

    Je remarque qu'il s'apparente beaucoup à mon code fournis plus haut, du moins pour extraire l'information du colorindex.... est ce office 2010 qui me pose des probléme?

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, sous Excel 2002 cela fonctionne, mais effectivement avec 2007 cela ne fonctionne pas tel quel, il faut retoucher ActiveCondition et GetStrippedValue

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bonjour et merci pour la réponse ca me rassure...

    Vous pourriez etre un tout petit peu plus precis sur les modifications à apporter? car comme je l'ai précisé voila quelques jours que je m'arrache la tete et je viens poser ma question ici vraiment quand je suis perdu... a la limite un tuto qui parle précisément de ca en 2010 je suis prenneur si vous avez... mais je trouve ca nulpart: en VBA recupérer les informations des cellules mise en forme par MFC. (plus précisément colorindex)

    de plus par l'impossibilité de récupérer un code fonctionnel sous 2010, je suis presque persuadé qu'une fois ce poste résolu il sera beaucoup consulté.

    Sur le code que j'ai fournis qu'est ce qui faudrais corriger pour pouvoir le rendre fonctionnel? il est quand même beaucoup plus claire que active condition et getstrippedvalue de par sa petite taille... car ca doit bloquer a peut pret au même niveau je pense....

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, juste pour tester sous 2007 avec 5 conditions et brut de fonderie,
    je ne l'ai fait que pour la condition xlBetween dans ActiveCondition
    en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If CDbl(Rng.Value) >= CDbl(FC.Formula1) And _
                               CDbl(Rng.Value) <= CDbl(FC.Formula2) Then .....
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     If CDbl(Rng.Value) >= CDbl(Temp) And _
                               CDbl(Rng.Value) <= CDbl(Temp2) Then .....
    et dans GetStrippedValue

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     If InStr(1, CF, "=", vbTextCompare) Then
            Temp = Mid(CF, 3, Len(CF) - 3)
            If Left(Temp, 1) = "=" Then
                Temp = Mid(Temp, 2)
            End If
        Else.....
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If InStr(1, CF, "=",vbTextCompare) Then
            Temp = Mid$(CF, 2, Len(CF) - 1)
        Else .....

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    ActiveCondition ne me retourne que des 0, et le getstripped récupére la chaine de texte a l'intérieur de la cellule...

    J'ai tenter de modifier les autres conditions de la même maniére, en prenant la variable temp définit avec le getstrippedvalue mais rien ne fonctionne...

    Sinon regarde mon code fourni plus haut, comme préciser il me retourne en théory le code couleur de la MFC, ce dernier fonctionne sur les premiere ligne, et plus je tire pour calculer les lignes suivantes plus ils se trompe et me retourne des 0... si ce code fonctionné je pourrais me dépatouiller en faisant une boucle qui parcourt la ligne, teste si la couleur MFC de la cellule et égale au code couleur défini en paramétre ou différent de 0 si 0 et bien la couleur neutre...

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 25
    Points : 15
    Points
    15
    Par défaut
    Bonjour et bon wekend a tous,

    Personne a d'idée sur mon probléme? Voulez vous un fichier excel exemple de ce que je veux?

    J'ai une ligne A, de 20 colonne elle est comparée a une autre ligne B de 20 colonne, dans la ligne A les cellules qui ont une valeur supérieur à leurs correspondante dans la ligne B se colore en rouge (fond de cellule) à l'aide d'une MFC.
    je voudrais que sur la 21 colonne de la ligne A, apparaise le nombre (count) de cellule rouge de la ligne....

Discussions similaires

  1. Compter le nb de cellules mises en gras par MFC
    Par rolline dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/05/2010, 11h10
  2. vider cellule mise en forme
    Par mjanbar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/12/2007, 16h58
  3. [EXCEL 2003] TCD - mise en forme par macro après rafraîchissement
    Par paul42 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/11/2007, 03h21
  4. Compter des cellules différentes
    Par steph05 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/07/2007, 05h18
  5. Compter des cellules de couleurs différentes
    Par solorac dans le forum Excel
    Réponses: 3
    Dernier message: 13/06/2007, 11h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo