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 :

Détecter et exploiter les paramètres des MFC d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut Détecter et exploiter les paramètres des MFC d'un fichier
    Bonjour,

    Je cherche une macro qui me permettrai de "lire" la mise en forme conditionnel de chaque cellule d'un tableau et de l'appliquer en mise en forme conventionnel...car je veux supprimer les formule qui le font la Mef conditionnel avant diffusion

    Le problème aujourd'hui c'est que je ne sais pas faire la premiere parti de ma macro: "lire" la MeF Conditionnel...

    Merci de votre aide

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Les mises en forme conditionnelles sont stockées dans la collection FormatConditions de l'objet Range.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 18
    Par défaut
    merci, j'avance un peu...

    J'ai compris en essayant que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A3").FormatConditions.Item(i)
    me permettant de lire la condition i mais je ne trouve pas grand chose a lire a l'interieur... (genre la couleur donnée si lea condition est vrai...

    tu pourrais m'en dire plus STP

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Bonjour,

    je te conseille de prendre une des cellules concernées en modif après avoir démarré l'enregistreur de macro. Tu vas dans le formattage conditionnel et tu changes (sans changer) ce qui t'intéresse. Ainsi tu verra le code à écrire. Easy non ?

    Exemple chez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro2()
     
        Selection.FormatConditions.Delete
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, _
            Formula1:="=""Blackberry"""
        Selection.FormatConditions(1).Font.ColorIndex = xlAutomatic
        Selection.FormatConditions(1).Interior.ColorIndex = 6
    End Sub

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,
    Citation Envoyé par Godzestla Voir le message
    Easy non ?
    non pas vraiment...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("XX").FormatConditions.Count > 0 Then ...
    me permettra de vérifier si la cellule contient une (ou plusieurs) mise en forme conditionnelle ou non mais ... comment récupérer les différents paramètres de ces mises en forme et comment déterminer les paramètres actifs ?

    Je n'ai pas encore trouvé la réponse

  6. #6
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Re,

    Pour trouver la description de la MeFC, il faut explorer la collection FormatConditions composée d'objet de type FormatCondition.

    L'aide est assez bien renseignée (en tout cas pour Excel 2010, peut-être que dans Excel 2007 tout n'est pas disponible) :

    Référence du développeur Excel 2010 > Référence du modèle objet Excel > Objet FormatCondition
    Référence du développeur Excel
    FormatCondition, objet
    Cet objet représente une mise en forme conditionnelle.
    Remarques

    L'objet FormatCondition appartient à la collection FormatConditions. La collection FormatConditions peut contenir jusqu'à trois mises en forme conditionnelles pour une plage donnée.

    Utilisez la méthode Add pour créer une nouvelle mise en forme conditionnelle. Si une plage a plusieurs mises en forme, vous pouvez utiliser la méthode Modify pour modifier l'une des mises en forme ou vous pouvez utiliser la méthode Delete pour supprimer une mise en forme, puis utilisez la méthode Add pour en créer une nouvelle.

    Utilisez les propriétés Font, Borders et Interior de l'objet FormatCondition pour modifier l'aspect des cellules mises en forme. Certaines propriétés de ces objets ne sont pas gérées par le modèle d'objet à la mise en forme conditionnelle. Certaines des propriétés compatibles avec la mise en forme conditionnelle sont reprises dans le tableau ci-dessous.

    (...)
    Exemple

    Utilisez FormatConditions(index), où index est le numéro d'index de la mise en forme conditionnelle, pour renvoyer un objet FormatCondition. L'exemple suivant montre comment définir les propriétés d'une mise en forme pour une mise en forme conditionnelle existante pour les cellules E1:E10.

    Visual Basic pour Applications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    With Worksheets(1).Range("e1:e10").FormatConditions(1)
        With .Borders
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = 6
        End With
        With .Font
            .Bold = True
            .ColorIndex = 3
        End With
    End With
    et aussi :

    Référence du développeur Excel 2010 > Référence du modèle objet Excel > Objet FormatCondition
    FormatCondition, membres de l’objet
    Cet objet représente une mise en forme conditionnelle.

    Méthodes
    Nom Description
    Delete Supprime l’objet.
    Modify Modifie un format conditionnel existant.
    ModifyAppliesToRange Définit la plage de cellules à laquelle cette règle de mise en forme s’applique.
    SetFirstPriority Attribue à la règle de mise en forme conditionnelle en question la valeur de priorité « 1 » de sorte qu’elle soit évaluée avant toutes les autres règles présentes dans la feuille de calcul.
    SetLastPriority Définit l’ordre d’évaluation de la règle de mise en forme conditionnelle de sorte qu’elle soit évaluée après toutes les autres règles présentes dans la feuille de calcul.

    Propriétés
    Nom Description
    Application Utilisée sans qualificateur d’objet, cette propriété renvoie un objet Application qui représente l’application Microsoft Excel. Lorsqu’elle est utilisée avec un qualificateur d’objet, elle renvoie un objet Application représentant l’application ayant créé l’objet spécifié (vous pouvez utiliser cette propriété avec un objet OLE Automation pour renvoyer l’application de cet objet). En lecture seule.
    AppliesTo Renvoie un objet Range qui spécifie la plage de cellules à laquelle la règle de mise en forme est appliquée.
    Borders Renvoie une collection Borders qui représente les bordures d’un style ou d’une plage de cellules (y compris une plage définie comme une partie d’un format conditionnel).
    Creator Renvoie l’application qui a créé cet objet, sous la forme d’un nombre entier de 32 bits. Type de données Long en lecture seule.
    DateOperator Spécifie l’opérateur Date utilisé dans le format conditionnel. En lecture-écriture.
    Font Renvoie un objet Font qui représente la police de l’objet spécifié.
    Formula1 Renvoie la valeur ou l’expression associée au format conditionnel ou à la validation de données. Il peut s’agir d’une constante, d’une chaîne, d’une référence à une cellule ou d’une formule. Type de données String en lecture seule.
    Formula2 Renvoie la valeur ou l’expression associée au second élément d’un format conditionnel ou d’une validation de données. N’est utilisée que si la propriété Operator du format conditionnel de validation de données a la valeur xlBetween ou xlNotBetween. Il peut s’agir d’une constante, d’une chaîne, d’une référence à une cellule ou d’une formule. Type de données String en lecture seule.
    Interior Renvoie un objet Interior qui représente l’intérieur de l’objet spécifié.
    NumberFormat Renvoie ou définit le format numérique appliqué à une cellule si la règle de mise en forme conditionnelle renvoie True. Type Variant en lecture-écriture.
    Operator Renvoie une valeur de type Long qui représente l’opérateur pour le format conditionnel.
    Parent Renvoie l’objet parent de l’objet spécifié. En lecture seule.
    Priority Renvoie ou définit la valeur de priorité de la règle de mise en forme conditionnelle. La priorité détermine l’ordre d’évaluation lorsqu’une feuille de calcul contient plusieurs règles de mise en forme conditionnelle.
    PTCondition Renvoie une valeur de type Boolean qui indique si le format conditionnel est appliqué à un graphique de tableau croisé dynamique. En lecture seule.
    ScopeType Renvoie ou définit l’une des constantes de l’énumération XlPivotConditionScope qui détermine l’étendue du format conditionnel lorsqu’il est appliqué à un graphique de tableau croisé dynamique.
    StopIfTrue Renvoie ou définit une valeur de type Boolean qui détermine si les autres règles de mise en forme conditionnelle de la cellule doivent être évaluées lorsque la règle active renvoie la valeur True.
    Text Renvoie ou définit une valeur de type String qui spécifie la chaîne de texte utilisée par la règle de mise en forme conditionnelle.
    TextOperator Renvoie ou définit l’une des constantes de l’énumération XlContainsOperator qui spécifie la recherche de texte effectuée par la règle de mise en forme conditionnelle.
    Type Renvoie une valeur de type Long contenant une valeur xlFormatConditionType qui représente le type d’objet.
    Le mieux est d'explorer en debug une cellule avec MeFC pour repérer les valeurs des différentes propriétés...

  7. #7
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Citation Envoyé par fring Voir le message
    Bonjour,


    non pas vraiment...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("XX").FormatConditions.Count > 0 Then ...
    me permettra de vérifier si la cellule contient une (ou plusieurs) mise en forme conditionnelle ou non mais ... comment récupérer les différents paramètres de ces mises en forme et comment déterminer les paramètres actifs ?

    Je n'ai pas encore trouvé la réponse
    Bonjour, tu as raison Fring, mea culpa.

    Mais je pense qu'il est possible d'extraire malgré tous les différents paramètres des différentes mises en forme en se donnant un peu de mal.

    Avec ce code sur une cellule avec MEF cond et 2 formules, je récupére pas mal de paramètres (le code est sale et ne récupère pas tout), mais au niveau de l'idée c'est une avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim i As Integer
    For i = 1 To Range("A2").FormatConditions.Count
        Debug.Print "Cond " & i
        Debug.Print "BordersLineStyle " & Range("A2").FormatConditions.Item(i).Borders.LineStyle
        Debug.Print "FontFonstyle " & Range("A2").FormatConditions.Item(i).Font.FontStyle
        Debug.Print "Type " & Range("A2").FormatConditions.Item(i).Type
        Debug.Print "Operator " & Range("A2").FormatConditions.Item(i).Operator
        Debug.Print "Type " & Range("A2").FormatConditions.Item(i).Type
        Debug.Print "Formula1 " & Range("A2").FormatConditions.Item(i).Formula1
    Next i
    End Sub
    il reste bien sur à translater les codes retournés pour operator , type,... en =, xlGreater, et autre.... c'est surtout là que cela semble fastidieux.

    Quant-à déterminer le paramètre actif....alors là....

    -----------Edit-----------
    Oops. Coiffé par Corona. Place au pros. Salut Corona.

Discussions similaires

  1. [VB6] Dependency Walker - Voir les paramètres des fonctions
    Par snoopy69 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/02/2009, 13h34
  2. API pour exploiter les informations des fichiers MANIFEST.MF ?
    Par darkmath dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 15/08/2008, 13h53
  3. Récuperer les paramètres des procédures
    Par weed dans le forum Oracle
    Réponses: 4
    Dernier message: 15/05/2008, 22h40
  4. Cacher les paramètres des liens
    Par DarkWark dans le forum Struts 1
    Réponses: 8
    Dernier message: 31/01/2007, 18h06
  5. Lister les paramètres des procédures d'un schéma
    Par raoulbranche dans le forum Oracle
    Réponses: 4
    Dernier message: 20/09/2006, 12h27

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