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 des cellules sous conditions


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut colorer des cellules sous conditions
    Bonjour,
    Je suis totalement débutant en VBA, je n'y connais rien J'y suis venu par force. Nous remplissons des tableaux excel sur des animaux bagués. ils ont six bagues de couleur différente. Pour plus de simplicité, à chaque couleur correspond un chiffre. On m'a demandé de faire un tableau excel qui transformerai le code rentré en cellules de couleur équivalente. Comme j'ai 6 couleurs en tout, je n'ai pas pu utiliser la mise en forme conditionnelle. J'ai donc trouvé un code en VBA que j'ai adapté comme j'ai pu et qui me convient, le voici :
    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
     
    'START OF CODE
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim WatchRange As Range
    Dim CellVal As String
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    CellVal = Target
    Set WatchRange = Range("A3:F1000")
     
    If Not Intersect(Target, WatchRange) Is Nothing Then
    Select Case CellVal
    Case 1
    Target.Interior.ColorIndex = 5
    Target.Font.ColorIndex = 5
    Case 2
    Target.Interior.ColorIndex = 10
    Target.Font.ColorIndex = 10
    Case 3
    Target.Interior.ColorIndex = 8
    Target.Font.ColorIndex = 8
    Case 4
    Target.Interior.ColorIndex = 46
    Target.Font.ColorIndex = 46
    Case 5
    Target.Interior.ColorIndex = 45
    Target.Font.ColorIndex = 45
    Case 6
    Target.Interior.ColorIndex = 15
    Target.Font.ColorIndex = 15
    Case 0
    Target.Interior.ColorIndex = 0
    Target.Font.ColorIndex = 2
     
    End Select
    End If
    End Sub
    'END OF CODE
    Sauf que maintenant mes collègues trouve que cela serait trop long de rentrer 1 chiffre pas cellule et voudraient rentrer le code de 6 chiffres dans une seule cellule pour avoir 6 cellules à côté qui se colorent.

    Du coup, je suis perdu. Si quelqu'un pouvait me sortir de là...

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 553
    Points : 566
    Points
    566
    Par défaut
    je ne comprends pas bien la fin de ton post
    au lieu d'avoir 6 cellules, ils veulent tous les codes dans une seule cellule
    Quelles cellules devront être colorées alors ?

    Peut tu faire un ptit exemple sur ton fichier et faire une impression d'écran stp ?

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Essaye ceci : (les codes se rentrent en colonne A)
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Byte
     
    If Target.Column <> 1 Or Target.Count > 1 Then Exit Sub
    Rows(Target.Row).Interior.ColorIndex = xlNone
    For x = 1 To Len(Target.Value)
        Select Case Mid(Target.Value, x, 1)
            Case 1
            Target.Offset(0, x).Interior.ColorIndex = 5
            Target.Offset(0, x).Font.ColorIndex = 5
            Case 2
            Target.Offset(0, x).Interior.ColorIndex = 10
            Target.Offset(0, x).Font.ColorIndex = 10
            Case 3
            Target.Offset(0, x).Interior.ColorIndex = 8
            Target.Offset(0, x).Font.ColorIndex = 8
            Case 4
            Target.Offset(0, x).Interior.ColorIndex = 46
            Target.Offset(0, x).Font.ColorIndex = 46
            Case 5
            Target.Offset(0, x).Interior.ColorIndex = 45
            Target.Offset(0, x).Font.ColorIndex = 45
            Case 6
            Target.Offset(0, x).Interior.ColorIndex = 15
            Target.Offset(0, x).Font.ColorIndex = 15
            Case 0
            Target.Offset(0, x).Interior.ColorIndex = 0
            Target.Offset(0, x).Font.ColorIndex = 2
        End Select
    Next
    End Sub

  4. #4
    Membre chevronné Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Points : 1 900
    Points
    1 900
    Par défaut
    bonjour à tous

    je ne sais pas si j'ai tout compris mais voila un essai

    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
    'START OF CODE
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim WatchRange As Range
    Dim CellVal As String, i as integer
    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    CellVal = Target
    Set WatchRange = Range("A3:A1000")
     
    If Not Intersect(Target, WatchRange) Is Nothing Then
        for i = 1 to len(target.value)
            cellval = val(mid(target,i,1))
    Select Case CellVal
    Case 1
    Target.offset(0,i-1).Interior.ColorIndex = 5
    Target.offset(0,i-1).Font.ColorIndex = 5
    Case 2
    Target.offset(0,i-1).Interior.ColorIndex = 10
    Target.offset(0,i-1).Font.ColorIndex = 10
    Case 3
    Target.offset(0,i-1).Interior.ColorIndex = 8
    Target.offset(0,i-1).Font.ColorIndex = 8
    Case 4
    Target.offset(0,i-1).Interior.ColorIndex = 46
    Target.offset(0,i-1).Font.ColorIndex = 46
    Case 5
    Target.offset(0,i-1).Interior.ColorIndex = 45
    Target.offset(0,i-1).Font.ColorIndex = 45
    Case 6
    Target.offset(0,i-1).Interior.ColorIndex = 15
    Target.offset(0,i-1).Font.ColorIndex = 15
    Case 0
    Target.offset(0,i-1).Interior.ColorIndex = 0
    Target.offset(0,i-1).Font.ColorIndex = 2
     
    End Select
    next i
    End If
    End Sub
    'END OF CODE
    oups : bonjour fring, excuse pour la collision (promis je n'ai pas copié )

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci
    Merci beaucoup à tous, et surtout à Fring (je n'ai pas essayé les autres codes). Ton code marche au poil, pour moi c'est de la magie

    merci beaucoup à tous

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

Discussions similaires

  1. [XL-2010] Effacer des cellules sous conditions + remonter des données
    Par Sebiwan67 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/08/2014, 14h46
  2. Clignotement des cellules sous condition dates
    Par ksai001 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/06/2011, 11h58
  3. Macro coloration de cellules sous conditions
    Par balata9 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/09/2010, 21h29
  4. [Toutes versions] Transposer des cellules sous condition
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/09/2010, 17h57
  5. [XL-2000] Saisie dans des cellules sous conditions
    Par cedana dans le forum Excel
    Réponses: 3
    Dernier message: 14/01/2010, 14h00

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