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 :

Mise en forme conditionnelle par macro [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut Mise en forme conditionnelle par macro
    Bonjour,
    Je souhaiterais réaliser une macro de mise en forme conditionnelle d'un tableau (une ligne complète en rouge en fonction de la valeur d'une cellule).
    J'ai donc créé une boucle, qui fonctionne pour la sélection de la ligne, mais qui n'incrémente pas automatiquement la cellule.
    Je pense que la syntaxe de la condition sur la ligne 14 est incorrecte.

    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
    Sub MFC()
     
    Dim i As Integer
    Dim j As Variant
     
    For i = 3 To 10
        Rows(i).Select
        j = Range("G", i).Value
     
        'suppression conditions
        Selection.FormatConditions.Delete
        'condition auto
        'Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$G$3=1"  (OK)
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=j=1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        'mise ne forme
        With Selection.FormatConditions(1).Font
            .Bold = True
            .Italic = False
            .Color = -16776961
            .TintAndShade = 0
        End With
    Next i
     
    End Sub


    Merci pour votre aide :-)

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=" & j & "=1"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Je viens d'essayer, mais il me génère une erreur 1004 à la ligne 8.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 701
    Par défaut
    Bonjour,

    Pourquoi passer par une macro?
    Une simple mise en forme conditionnelle suffirait:
    Si tu sélectionnes une case toute la plage sur laquelle appliquer la MFC et que celle-ci démarre en ligne 3, applique la formule:
    => Le fait de laisser le $ sur G mais pas sur 3 fait qu'Excel regardera toujours la colonne G quelle que soit la colonne sur laquelle la MFC s'applique mais dans cette colonne G, il regardera systématiquement la case de la ligne courante. C'est bien ce que tu veux non?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 9
    Par défaut
    Oui, c'est bien cela. Je souhaite que la mise en forme de la ligne complète se fasse par rapport à la cellule G de la ligne courante, incrémentée dans la boucle. C'est pour cela que j'avais mis pour la mise en forme : G et le N° de la ligne de la boucle.

    Peut-être que je me complique...

    Quand je fais une macro à l'enregistrement, ligne par ligne, voici ce que j'obtiens et que je voudrais simplifier en faisant une boucle :
    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
    Sub Macro2()
    '
    ' Macro2 Macro
    '
     
    '
        Rows("3:3").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$G$3=1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16776961
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Rows("4:4").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$G$4=1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16776961
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Rows("5:5").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$G$5=1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16776961
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Rows("6:6").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$G$6=1"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Font
            .Color = -16776961
            .TintAndShade = 0
        End With
        Selection.FormatConditions(1).StopIfTrue = False
    End Sub
    Cette macro fonctionne quand je sélectionne ligne par ligne, mais pas quand je sélectionne la plage des lignes 3 à 6...

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 701
    Par défaut
    ça ne marche pas à cause du $ devant le numéro de ligne dans ta formule; cf. ma proposition.
    La macro est inutile à mon avis.

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

Discussions similaires

  1. [XL-2007] Mise en forme conditionnelle par macro sur cellule contenant une formule
    Par Breton35 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/10/2015, 14h22
  2. [XL-2010] Manipuler les mises en forme conditionnelles par macro
    Par EmmanuelleC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/04/2014, 17h44
  3. [XL-2010] Mise en forme conditionnelle par ligne
    Par sbricout dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/02/2011, 17h51
  4. mise en forme conditionnelle par Date
    Par bibi28 dans le forum IHM
    Réponses: 10
    Dernier message: 24/08/2008, 16h17
  5. Mise en forme bordure par Macro sur plage nommée
    Par tempo-lyon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/10/2007, 10h52

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