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 :

Formatage conditionnel d'un plage de cellules [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Mai 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 72
    Par défaut Formatage conditionnel d'un plage de cellules
    Bonjour

    Je souhaite, en VBA, appliquer un formatage conditionnel à une plage de cellules dans un tableau croisé dynamique, selon deux critères:
    si la valeur est comprise entre 0 et 32 alors mettre le texte en rouge et colorer la cellule en rouge
    et si la valeur est comprise entre 32 et 40 colorer la celklule en orange
    Voilà ce que j'ai codé:
    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
     
      'set two different interior filled according to the cell value in the plage
     
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
            Formula1:="=0", Formula2:="=32"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16383844
            .TintAndShade = 0
        End With
        With Selection.FormatConditions(1).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 255
            .TintAndShade = 0
        End With
        'set the second Conditional Format
        Selection.FormatConditions(1).StopIfTrue = False
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
            Formula1:="="">32""", Formula2:="=40"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(2).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
        End With
    Mais je n'obtiens pas le résultat escompté car in fine toutes les cellules qui sont entre zéro et 32 sont colorées en orange. Pour le moment je n'arrive pas encore à savoir ce qui est mal utilisé dans les propriétés ou méthodes des objets de formaage conditionnel.

    Merci pour votre aide
    clem256

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Dans le code que tu donnes, il n'y a que la partie entre 0 et 32 (colorée en rouge).
    A quoi correspond Selection ?
    Il n'est pas bon de travailler avec des Sleection, mieux vaut travailler directement avec les objets que l'on veut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1").Select
    Selection.Value = "toto"

    Mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").Value = "toto"
    Essaie de voir si tu ne peux pas déjà améliorer cela

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    La MFC dans un TCD doit se référer à des champs pas à des cellules et donc surtout pas à une sélection...

    "mettre le texte en rouge et colorer la cellule en rouge" : donc on ne lit plus le contenu, c'est bien cela ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Mai 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 72
    Par défaut
    Merci beaucoup.

    @riaolle
    je n'ai pas bien compris pourquoi tu dis qu'on ne voit que la partie de code pour le formatage entre 0 et 32 dans mon extrait de code. Dans ma naiveté il me semblait que
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        'set the second Conditional Format
        Selection.FormatConditions(1).StopIfTrue = False
        Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
            Formula1:="="">32""", Formula2:="=40"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(2).Interior
            .PatternColorIndex = xlAutomatic
            .Color = 49407
            .TintAndShade = 0
        End With
    avait pour but de définir la seconde condition de formatage pour les valeurs comprises entre 32 et 40?

    @78chris
    oui mettre le texte et le fond en rouge ce n'est pas très heureux je suis d'accord. C'était juste un essai rapide. Ce n'est pas l'intention finale. Le code je l'ai récupéré directement en enregistrant une macro des actions sur TCD. Donc je pensais que c'était la bonne direction.

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    RE
    Citation Envoyé par clem256 Voir le message
    @78chris
    oui mettre le texte et le fond en rouge ce n'est pas très heureux je suis d'accord. C'était juste un essai rapide. Ce n'est pas l'intention finale. Le code je l'ai récupéré directement en enregistrant une macro des actions sur TCD. Donc je pensais que c'était la bonne direction.
    L'enregistreur enregistre tes manips : si elles ne sont pas les bonnes, le code n'est pas bon.

    On n'automatise bien que ce qu'on connait bien...

    2 images de cas auxquels j'ai répondu pourront peut-être t'aider

    Pour ne visualiser que les chiffres des totaux
    Nom : MFC_TCD.png
Affichages : 208
Taille : 83,5 Ko

    Pour les évolutions négatives
    Nom : MFC_TCD.gif
Affichages : 208
Taille : 23,5 Ko
    Pour appliquer à :
    • La seconde option concerne tous les calculs y compris les sous-taux et totaux
    • La troisième les calculs hors sous-taux et totaux

  6. #6
    Membre confirmé
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Mai 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 72
    Par défaut
    @78chris
    Merci. Je vais pendre le temps d'analyser tes propositions pour application à mon cas. néanmoins quand je me positionne dans le TCD pour modifier les règles, contrairement à ton exemple je ne vois pas apparaitre les noms des changes dans la fenêtre dans la règle. Il doit y avoir une manip que je fais mal. Ma version d'Excel 2016 est en Anglais et je choisis l'option "Manage Rules".
    Ci-joint un extrait de mon TCD avec le résultat de ma mise en forme courante. Ce sont les valeurs des champs "From aa/mm/jj to aa/mm/jj" que je souhaite mettre en forme.pas celles qui sont en gras qui sont des totaux.
    Images attachées Images attachées  

  7. #7
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Citation Envoyé par clem256 Voir le message
    @riaolle
    je n'ai pas bien compris pourquoi tu dis qu'on ne voit que la partie de code pour le formatage entre 0 et 32 dans mon extrait de code. Dans ma naiveté il me semblait que
    le code
    Oops, je ne suis pas allée jusqu'en bas ...
    Par contre, j'ai quand même une remarque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [...]Operator:=xlBetween, _
            Formula1:="=0", Formula2:="=32"
    Contre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [...]Operator:=xlBetween, _
            Formula1:="="">32""", Formula2:="=40"
    C'est normal ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LibreOffice][Tableur] Activation et désactivation d'un Formatage conditionnel pour une plage
    Par Astrobal dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 10/10/2016, 23h04
  2. Réponses: 3
    Dernier message: 11/08/2014, 13h15
  3. [LibreOffice][Tableur] Pb avec formatage conditionnel et récupération des couleurs de cellule par macro
    Par bxdfr dans le forum OpenOffice & LibreOffice
    Réponses: 3
    Dernier message: 06/12/2013, 16h01
  4. [XL-2003] Mise en forme conditionnelle sur plage de cellules
    Par barbare_tf dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 30/05/2009, 18h29
  5. Formatage conditionnel cellule
    Par christian81 dans le forum IHM
    Réponses: 3
    Dernier message: 16/05/2007, 10h49

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