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 :

[XL-2007] Macro pour colorier des cellules en fonction de données


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    employé
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : employé
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut [XL-2007] Macro pour colorier des cellules en fonction de données
    Bonjour à vous,

    Je suis un peu perdu dans l'utilisation de Excel.

    Je voulais savoir s'il était possible avec un macro d'effectuer cette manipulation:

    J'ai plusieurs colonnes et une centaine de lignes, dans la colonne "C" il y a des noms en fonction des communes des la colonne "A"

    Ma question est de savoir s'il est donc possible que, si j'ai le nom "Marc" dans la colonne "C" alors la cellule de la même ligne correspondante en colonne "A" devient par exemple en rouge?

    J'espère avoir était le plus précis.

    Merci par avance de votre aide

    stéphane

  2. #2
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Bonsoir,

    Tu dois utiliser Cells(i,j), qui désigne la cellule de la ligne i et de la colonne j.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Colorer()
     
        Dim i As Integer
        i = 1
     
        While Cells(i, 3).Value <> ""
            If Cells(i, 3).Value = "Marc" Then
                Cells(i, 1).Interior.ColorIndex = 6
            End If
            i = i + 1
        Wend
     
    End Sub
    Ici tu testes sur la colonne 3, et tu changes la couleur de la colonne 1 (à ligne fixée).


    Edit : Tu peux aussi le faire avec un formatage conditionnel, sans passer par VBA.
    Tu te places sur la première cellule où y a des données en colonne 1 > Accueil > Mise en forme conditionnelle > Règles de mise en surbrillance des cellules > Autres règles > Utiliser une formule
    Pour la formule tu mets : =ET($C2="Marc")
    N'oublie pas de changer le format pour mettre le fond en rouge

    Enfin tu copies ta cellule sur laquelle le formatage conditionnel est attaché, et tu fais un collage spécial > format sur les autres cellules.


    Bonne soirée.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    employé
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : employé
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci de votre aide.

    Mais je ne comprends pas le début.

    Tu dois utiliser Cells(i,j), qui désigne la cellule de la ligne i et de la colonne j
    ???

    La ligne i se trouve ou ? car je n'arrive pas à faire fonctionner la macro.

    Merci.

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur en études décisionnelles
    Inscrit en
    Février 2013
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur en études décisionnelles

    Informations forums :
    Inscription : Février 2013
    Messages : 134
    Points : 351
    Points
    351
    Par défaut
    Bonjour,
    Comme j'initialise i à 1, cela représente la première ligne de ton classeur excel. Tu peux modifier cette valeur pour qu'elle colle à ton besoin (par exemple, 5 si les données commencent à la 5e ligne).

    Dans ce cas, cela signifie que je teste d'abord C1 (qui renvoie à Cells (1,3)).
    La procédure va tester la colonne C de ligne en ligne (C2, C3, ...) jusqu'à ce qu'elle rencontre un champ vide dans la colonne C. Alors, elle s'arrête.

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une variante parmi d'autres. Il te suffit d'augmenter le nombre de "Case" à tes besoins en copiant autant de fois que tu veux les lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Case "Marc"
        .Interior.ColorIndex = 3
    tout en sachant que "ColorIndex" est limité à 56 couleurs.
    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 Colorer()
     
        Dim Plage As Range
        Dim Cel As Range
     
        'la plage est défini de C1 à Cx sur la feuille active dans Excel
        With ActiveSheet
     
            Set Plage = .Range(.Cells(1, 3), .Cells(.Rows.Count, 3).End(xlUp))
     
        End With
     
        'parcours la plage cellule par cellule et compare les noms
        For Each Cel In Plage
     
            With Cel.Offset(, -2) 'ici on fait référence à la cellule de la colonne A
     
                Select Case Cel.Value
     
                    Case "Marc"
                       .Interior.ColorIndex = 3
     
                    Case "Pierre"
                       .Interior.ColorIndex = 5
     
                    Case "Paul"
                       .Interior.ColorIndex = 8
     
        '            Case etc...
        '               .Interior.ColorIndex = 10
     
                End Select
     
            End With
     
        Next Cel
     
    End Sub
    Hervé.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    employé
    Inscrit en
    Mars 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : employé
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci de vos réponses,

    j'ai pu adapter à mon tableau et cela fonctionne trés bien

    stéphane

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

Discussions similaires

  1. [XL-2007] Réalisation d'un macro pour fusionner des cellules sous conditions
    Par yannickcochard dans le forum Excel
    Réponses: 9
    Dernier message: 19/05/2015, 01h31
  2. [XL-2002] Code VBA pour colorier des cellules à partir de plusieurs critères
    Par NoodleDS dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/11/2013, 22h05
  3. [XL-2007] MACRO pour colorier les cellules
    Par yusufwac dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/07/2013, 21h09
  4. Réponses: 7
    Dernier message: 22/03/2011, 18h00
  5. macro pour selectionner des cellules
    Par Daniela dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/02/2009, 08h27

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