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 :

Colorer 1 groupe de ligne sur 2


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2004
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 80
    Par défaut Colorer 1 groupe de ligne sur 2
    Bonjour,

    Je suis en train d'écrire une macro EXcel (en VBA donc).
    J'ai un tableau, donc la première colonne A a des cellules fusionnées (de tailles différentes).

    Je voudrais colorer un groupe de celleule sur 2, en fonction de la cellule A.

    J'ai trouvé ce code sur le forum, qui fonctionne très bien, mais je ne le comprend pas vraiment... Et notamment, je voudrais changer le couleur mais ne sais pas comment faire (j'ai essayé de changer les valeurs du ColorIndex sans succès.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
    Dim T As Boolean
        Range("A2").Select
        While Selection(1).Value <> ""
            Selection.Resize(, 4).Interior.ColorIndex = T * 4146 + 4
            T = Not (T)
            Selection.Offset(1, 0).Select
        Wend
    End Sub

    Je vous remercie d'avance pour votre aide et vos explications
    Deb

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    en attendant des précisions, juste en passant, peut se faire sans code directement par une mise en forme conditionnelle …

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2014
    Messages : 25
    Par défaut
    Salut,

    Bon j'ai essayé de décortiquer ce bout de code. Ce que je peux expliquer en commentaire :

    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
    Sub Macro1()
    'T = false à la déclaration
    Dim T As Boolean
        'On selectionne la première ligne à colorier (ligne 2)
        Range("A2").Select
        'On parcourt les ligne tant qu'elles sont pas vides
        While Selection(1).Value <> ""
            'Resize permet d'agrandir la selection, au début au lieu de prendre juste A2 on prend A2:D2
            'Là on se base sur colorindex, tu trouveras les couleurs ici http://msdn.microsoft.com/en-us/library/office/ff840443(v=office.15).aspx
            ' si T = False alors colorindex = 4 ce qui correspond à ce vert fluo
            ' si T = True alors colorindex = -4142 (True * nombre = - nombre) ce qui correspond à aucun remplissage
            ' si tu veux changer de couleur remplace 4 par le nombre correspondant à ta couleur (voir site ci dessus) et 4146 par 4142 + NumeroDeLaCouleur
            ' si tu veux du orange, remplace 4 par 45 et 4146 par 4187 (4142 + 45)
            Selection.Resize(, 4).Interior.ColorIndex = T * 4146 + 4
            'on inverse T pour avoir cet effet de une ligne sur deux (la couleur change suivant la valeur de T je le rappelle)
            T = Not (T)
            'On passe à la ligne suivante
            Selection.Offset(1, 0).Select
        Wend
    End Sub

    Y a peut être une ou deux erreurs dans mes explications mais j'ai fait au mieux.

  4. #4
    Expert confirmé
    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
    Par défaut
    Bonjour,

    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
     
    Sub Macro1()
     
        'supprime les couleurs de fond
        Range("A:D").Interior.ColorIndex = 0
     
        Range("A1").Select 'commence en colonne A à partir de A1
     
        'boucle jusqu'à la première cellule vide rencontrée en colonne A
        While Selection.Value <> ""
     
            'la sélection est augmentée jusqu'à la colonne D et colorée en vert
            Selection.Resize(, 4).Interior.ColorIndex = 4
     
            'se déplace de 3 lignes plus bas afin de laisser deux lignes sans fond coloré
            Selection.Offset(3, 0).Select
     
        Wend
     
    End Sub
    Hervé.

  5. #5
    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
    La fusion des cellules, c'est le mal !!!
    A éviter autant que faire se peut. Ca finit toujours par compliquer ou apporter des problèmes.

Discussions similaires

  1. [2.3] Colorer 1 ligne sur 2 Crosstab
    Par sterix92 dans le forum BIRT
    Réponses: 4
    Dernier message: 18/02/2009, 18h09
  2. Réponses: 6
    Dernier message: 01/04/2008, 18h47
  3. JTable colorer 1 ligne sur 2
    Par haco28 dans le forum Composants
    Réponses: 5
    Dernier message: 15/02/2008, 10h56
  4. Réponses: 3
    Dernier message: 30/08/2007, 08h56
  5. GROUP BY, critère sur la ligne sélectionnée
    Par jeremya dans le forum Langage SQL
    Réponses: 1
    Dernier message: 18/04/2006, 16h13

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