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 :

[VBA-E] Mise en forme conditionnelle


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Points : 107
    Points
    107
    Par défaut [VBA-E] Mise en forme conditionnelle
    Bonjour

    Voilà, j'aimerais créer une macro, ou autre moyen , de maniere a avoir le même résultat que la mise en forme conditionnelle, mais en ayant plus de conditions que trois, il m'en faudrait 7 exactement.

    Exemple :
    Je tape J dans ma cellule elle le fond passe en jaune
    Je tape O dans ma cellule elle le fond passe en Orange

    ainsi de suite jusqu'a sept couleur, et que cela se fasse automatiquement, que je ne soit pas obligé de lancer la macro manuelemnt a chaque fois, je ne travaille pas avec USF, mais directement sur le tableur.

    Merci

  2. #2
    Membre régulier Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Points : 87
    Points
    87
    Par défaut
    exemple de code appliqué sur la colonne A et sur 500 lignes (à modifier dans la constante "endofcolumn")
    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
    Sub MEF()
    Dim endofcolumn As Long
    endofcolumn = 500
    For i = 1 To endofcolumn
     Select Case Cells(i, 1).Value
        Case Is = ""
        Cells(i, 1).Interior.ColorIndex = 0
        Case Is = "A"
        Cells(i, 1).Interior.ColorIndex = 10
        Case Is = "B"
        Cells(i, 1).Interior.ColorIndex = 20
        Case Is = "C"
        Cells(i, 1).Interior.ColorIndex = 28
        Case Is = "M"
        Cells(i, 1).Interior.ColorIndex = 60
        Case Is = "H"
        Cells(i, 1).Interior.ColorIndex = 45
        '...et ainsi de suite
     End Select
     Next i
    End Sub
    EDIT: et dans la feuille concernée, ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Worksheet_Change(ByVal Target As Range)
    Target = Range("A1:A500")
    Call MEF
    End Sub
    RE-EDIT: cela m´apprendra à meiux lire le s questions...
    J´ai l´habitude de coder comme un lance-grenades
    Alors ne vous étonnez pas si mes macros vous pétent dans les doigts...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 549
    Points : 556
    Points
    556
    Par défaut
    Doringne, tu réponds pas à sa problématique de ne paslancer la macro manuellement mais cependant en reprenant ont code, il y a juste à mettre al macroMEF comme ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Call MEF()
    End Sub
    A chaque fois que ta feuille sera modifié, ta macro s'éxécutera
    Cette amcro devra évidemment boucler sur les cellules sur lesquelle tu veux fair tamise en forme..Tu l'écris unefois et l'appelle comme je t 'ai montré et tu verras çà fait le mêem effet que la mise en forme conditonnelle

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour reprendre le code de doringen placé dans la procédure indiquée par Helios, tu peux aussi faire ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Select Case Cells(Target.row, 1).Value
        Case ""
            Cells(Target.row, 1).Interior.ColorIndex = 0
        Case "A", "N", "S"
            Cells(Target.row, 1).Interior.ColorIndex = 20
        Case "C", "F","L"
            Cells(Target.row, 1).Interior.ColorIndex = 28
    'etc.
    T'évite d'appeler une procédure avec passage de Target.row
    A+

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Pourquoi passer par le .row???

    Target est une cellule.
    Il suffit de lui appliquer ce qu'on veut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Target.Interior.ColorIndex = 0
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Chuis bête ! T'as raison (... bien sûr !...)

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Points : 107
    Points
    107
    Par défaut Mise en Forme conditionnelle
    Bonjour a tous
    je reprend une question que je n'ai pas eu le temps de finir.
    Comment appliquer la macro a toue la feuille et pas seulemment à une colonne

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    est-ce que comme écrit plus haut tout mettre dans le Worksheet_change ne te suffit pas ...?
    pour le principe :

    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
     
     
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim c As Range
      For Each c In Target
        Select Case c.Value
           Case "J"
             c.Interior.Color = vbYellow
           Case "R"
             c.Interior.Color = vbRed
           Case Else
             c.Interior.ColorIndex = xlNone
        End Select
     
      Next
    End Sub

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 300
    Points : 107
    Points
    107
    Par défaut Mise en Forme conditionnelle
    Sur le Principe cela a l'aire de fonctionner, mais pour le code des couleurs je connais qu'en valeur numérique, et la cela n'as plus l'air de fonctionner si je remplace vbred par ça valeur 3.
    as tu une de t'es astuce .....

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    3 c'est un index dans "la palette" de couleur ... remplace color par colorIndex

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/03/2015, 10h54
  2. [VBA-E] Mise en forme conditionnelle et recherche de format
    Par VinzVVK dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/12/2006, 19h20
  3. [VBA-E] mise en forme conditionnelle
    Par SUPERLOLO007 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/11/2006, 11h12
  4. [VBA][Excel] mise en forme conditionnelle
    Par titflocon dans le forum Access
    Réponses: 9
    Dernier message: 19/12/2005, 10h13
  5. Mise en forme conditionnelle en VBA / Cut-Paste
    Par priest69 dans le forum IHM
    Réponses: 4
    Dernier message: 03/09/2005, 13h54

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