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 :

macro pour mise en forme conditionnelle


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut macro pour mise en forme conditionnelle
    bonjour,
    je cherche depuis plusieurs jours une macro qui appliquerait une mise en forme conditionnelle à toutes les feuilles d un classeurs.
    Dans chaque feuille, j ai quatre colonne (A,B,C,D), je voudrais que le fond de la cellule D1 se colore en vert si elle est superieur à A1, en rouge si inferieur à A1 et en orange si egal A1 pareil pour la D2 avec A2, la D3 avec A3, etc. Je ne peux pas utiliser la MFC car ces feuilles sont générées par une macro.
    merci pour votre aide

  2. #2
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    Février 2007
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 309
    Points : 140
    Points
    140
    Par défaut
    Bonjour,
    Voici ce que je peux te proposer (à tester)
    sinon c'est quoi des MFC ?

    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
     
    Sub coloriage()
     
    x = Sheets.Count
    n = 1
     
    For i = 1 To x
        Sheets(i).Activate
        While Cells(n, 1) <> ""
            If Cells(n, 4) > Cells(n, 1) Then
            Cells(n, 4).Interior.ColorIndex = 43
            ElseIf Cells(n, 4) < Cells(n, 1) Then
            Cells(n, 4).Interior.ColorIndex = 3
            ElseIf Cells(n, 4) = Cells(n, 1) Then
            Cells(n, 4).Interior.ColorIndex = 44 ' ou 45
            End If
            n = n + 1
        Wend
        n = 1
    Next i
     
    End Sub

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    merci pour la macro je vais l essayer tout a l heure. MFC = mise en forme conditionnelle

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Bonjour

    J'ai testé la réponse de Djohn. Elle fonctionne parfaitement, mais uniquement pour la colonne D. Je me suis amusé à la modifier légèrement pour qu'elle marche pour les colonnes B à D.

    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
    Sub coloriage()
     
    x = Sheets.Count
    n = 1
     
    For i = 1 To x
        Sheets(i).Activate
        While Cells(n, 1) <> ""
            For z = 2 To 4
            If Cells(n, z) > Cells(n, 1) Then
            Cells(n, z).Interior.ColorIndex = 43
            ElseIf Cells(n, z) < Cells(n, 1) Then
            Cells(n, z).Interior.ColorIndex = 3
            ElseIf Cells(n, z) = Cells(n, 1) Then
            Cells(n, z).Interior.ColorIndex = 44
            End If
            Next z
            n = n + 1
        Wend
        n = 1
    Next i
    Sheets(1).Activate
    End Sub
    Jean Noël

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    bonjour et merci
    J utilise la premiere macro.
    trés bien ca marche pour tout le classeur, mais il faudrait que la macro me fasse cette operation en comparant la colone a partir de AI18 et la colonne a partir de AF18 (en sachant toujours que je ne connais pas la longueur de la colonne).
    Deuxiemement est il possible de remettre a jour les couleurs de cellules a chaque modification de données de la cellule concernées.?
    encore merci

  6. #6
    Membre habitué Avatar de Djohn
    Profil pro
    Inscrit en
    Février 2007
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 309
    Points : 140
    Points
    140
    Par défaut
    Je pars du principe que la colonne AI est la colonne qui change de couleur.

    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
    Sub coloriage()
     
    x = Sheets.Count
    n = 18
     
     
     
     
    For i = 1 To x
        Sheets(i).Activate
        'retire les couleurs de TOUTE la colonne AI
         Columns("AI:AI").Interior.ColorIndex = xlNone
        While Cells(n, 32) <> ""
            If Cells(n, 35) > Cells(n, 32) Then
            Cells(n, 35).Interior.ColorIndex = 43
            ElseIf Cells(n, 35) < Cells(n, 32) Then
            Cells(n, 35).Interior.ColorIndex = 3
            ElseIf Cells(n, 35) = Cells(n, 32) Then
            Cells(n, 35).Interior.ColorIndex = 44 ' ou 45
            End If
            n = n + 1
        Wend
        n = 18
    Next i
     
    End Sub
    Pour ton 2ement, j'ai rajouté une ligne qui te permet de décolorier les cellules, mais il te faudra relancer la macro à chaque mise a jour de tes cellules.

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    Merci beaucoup

    elle marche trés bien je classe l affaire resolu
    et merci encore

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

Discussions similaires

  1. Aide pour mise en forme conditionnelle
    Par NEC14 dans le forum Excel
    Réponses: 2
    Dernier message: 07/11/2013, 11h06
  2. [XL-2007] Macro de mise en forme conditionnelle
    Par RaiM1986 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/08/2011, 18h04
  3. [XL-2010] Ajout d'un jeu d'icone pour mise en forme conditionnelle MFC
    Par tomcat0125 dans le forum Excel
    Réponses: 0
    Dernier message: 15/06/2011, 10h52
  4. Aide pour mise en forme conditionnelle
    Par djoenis dans le forum Excel
    Réponses: 12
    Dernier message: 31/03/2011, 10h21
  5. Réponses: 1
    Dernier message: 20/04/2009, 15h26

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