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 colorer une cellule en fonction d'autres [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Par défaut Macro pour colorer une cellule en fonction d'autres
    Bonjour,
    c'est mon premier message, je me présente donc : je m'appelle Yann et je suis enseignant.

    Pour le suivi de mes élèves, j'ai créer un tableau à double entrée avec les élèves en abscisse et les compétences à valider en ordonnée.

    Les compétences sont regroupées en groupe (et les groupes en matière - par exemple vocabulaire) et à chaque groupe de compétence correspond une couleur (dans l'ordre de validation jaune, orange, vert, bleu, marron et noir).

    Le nombre de compétence par groupe n'est pas toujours le même.

    Je cherche à ce que s'affiche dans une case vide en dessous du nom de chaque élève la couleur du dernier groupe de compétence qu'il a validé.

    J'ai défini comme variable chaque plage correspondant à chaque groupe de compétences, puis le nombre de cellules vides dans ce groupe, de sorte que mon programme devrait pour chaque élève vérifier s'il a validé le groupe noir (et coloré la case en noir si oui), si non vérifié s'il a validé le groupe marron (et coloré la case en marron, etc.

    Voici donc ce que j'ai écrit :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Sub vocabulaire()
     
    Dim plagen As Range
    Dim NbcellViden As Integer
     
    Dim plagem As Range
    Dim NbcellVidem As Integer
     
    Dim plageb As Range
    Dim NbcellVideb As Integer
     
    Dim plagev As Range
    Dim NbcellVidev As Integer
     
    Dim plageo As Range
    Dim NbcellVideo As Integer
     
    Dim plagej As Range
    Dim NbcellVidej As Integer
     
    Dim i As Integer
     
    For i = 2 To 19
    Cells(4, i).Select
    Set plagen = ActiveSheet.Range(Cells(22, i), Cells(24, i))
    NbcellViden = plagen.SpecialCells(xlCellTypeBlanks).Count
     
    Set plagem = ActiveSheet.Range(Cells(18, i), Cells(21, i))
    NbcellVidem = plagem.SpecialCells(xlCellTypeBlanks).Count
     
    Set plageb = ActiveSheet.Range(Cells(15, i), Cells(17, i))
    NbcellVideb = plageb.SpecialCells(xlCellTypeBlanks).Count
     
    Set plagev = ActiveSheet.Range(Cells(11, i), Cells(14, i))
    NbcellVidev = plagev.SpecialCells(xlCellTypeBlanks).Count
     
    Set plageo = ActiveSheet.Range(Cells(8, i), Cells(10, i))
    NbcellVideo = plageo.SpecialCells(xlCellTypeBlanks).Count
     
    Set plagej = ActiveSheet.Range(Cells(5, i), Cells(7, i))
    NbcellVidej = plagej.SpecialCells(xlCellTypeBlanks).Count
     
    If NbcellViden = 0 Then
    ActiveCell.Interior.Color = RGB(0, 0, 0)
     
    ElseIf NbcellVidem = 0 Then
    ActiveCell.Interior.Color = RGB(102, 51, 0)
     
    ElseIf NbcellVideb = 0 Then
    ActiveCell.Interior.Color = RGB(0, 112, 192)
     
    ElseIf NbcellVidev = 0 Then
    ActiveCell.Interior.Color = RGB(0, 176, 80)
     
    ElseIf NbcellVideo = 0 Then
    ActiveCell.Interior.Color = RGB(247, 150, 70)
     
    ElseIf NbcellVidej = 0 Then
    ActiveCell.Interior.Color = RGB(255, 255, 0)
     
    Else
    ActiveCell.Interior.Color = RGB(255, 255, 255)
     
    End If
     
    Next i
     
    End Sub
    Évidemment, ça ne fonctionne pas, mais je n'arrive pas à trouver pourquoi...

    Si l'un d'entre vous peut m'aider, d'avance merci

    Yann

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Une proposition générique

    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
    Sub Vocabulaire()
    Dim i As Integer, j As Integer
    Dim Tb, Klr
     
    Tb = Array(5, 8, 11, 15, 18, 22, 25)                  'Tableau contenant le n° de lignes de chaque groupe en ordre croissant, on y ajoute à la fin la ligne juste en dessous du dernier groupe
    Klr = Array(RGB(255, 255, 0), RGB(247, 150, 70), RGB(0, 176, 80), RGB(0, 112, 192), RGB(102, 51, 0), RGB(0, 0, 0))    'Tableau des couleurs de chaque groupe (en ordre décroissant, càa couleur du dernier groupe en premier)
     
    With Worksheets("Feuil1")                             'A adapter
        .Cells(4, 2).Resize(, 18).Interior.Color = xlNone
        For i = 2 To 19
            For j = UBound(Tb) - 1 To LBound(Tb) Step -1
                If Application.CountIf(.Cells(Tb(j), i).Resize(Tb(j + 1) - Tb(j)), "") = 0 Then
                    .Cells(4, i).Interior.Color = Klr(j)
                    Exit For
                End If
            Next j
        Next i
    End With
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2014
    Messages : 2
    Par défaut
    Et évidemment, ça marche!!!
    Il faudra que je prenne le temps (à mon avis beaucoup...) pour comprendre ce que tu as fait, mais en attendant merci!!!
    Yann
    Problème résolu

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

Discussions similaires

  1. [XL-2007] macro coloré une cellule en fonction de la cellule selectionnez
    Par MINICHINE89 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/06/2013, 09h11
  2. [XL-2003] Macro pour rechercher une valeur en fonction de la valeur d'une cellule
    Par Rook93 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/01/2013, 11h42
  3. [XL-2003] macro pour remplir une cellule en fonction d'une autre
    Par kamilane dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/07/2010, 15h40
  4. [XL-2003] Macro pour copier une cellule d'un classeur à un autre sous condition
    Par mairiemeudon dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 14/06/2010, 15h28
  5. Colorer une cellule en fonction de sa valeur
    Par kkingstone dans le forum Excel
    Réponses: 5
    Dernier message: 20/05/2009, 10h44

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