Exécuter automatiquement la coloration des lignes en fonction du [Résolu]

TSAF16 - 24 juin 2016 à 16:47 - Dernière réponse : hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention
- 25 juin 2016 à 20:55
Salut à tous !
Help me please !
Mon code ne s'exécute pas comme je souhaite, quelqu'un pour m'aider s'il vous plais ! En fait je souhaite que la couleur de la ligne change automatiquement en fonction du code de la ville à chaque enregistrement.
Merci !

Voici le code
Sub color()
Sheets("GESTION").Select
FinLigne = ActiveSheet.UsedRange.Rows.Count + 1
NumeroLigne = 5
While NumeroLigne < FinLigne
If Range("C" & NumeroLigne).Value = "0Y4E" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 65535
If Range("C" & NumeroLigne).Value = "0D4A" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 255
If Range("C" & NumeroLigne).Value = "0M4A" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 5296274
If Range("C" & NumeroLigne).Value = "0L4E" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 225214
If Range("C" & NumeroLigne).Value = "0K4I" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 15478
If Range("C" & NumeroLigne).Value = "0B4S" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 23155
If Range("C" & NumeroLigne).Value = "0ED4A" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 65435
If Range("C" & NumeroLigne).Value = "0E4EA" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 65635
If Range("C" & NumeroLigne).Value = "0L4Y" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 55635
If Range("C" & NumeroLigne).Value = "0NK4M" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 37535
If Range("C" & NumeroLigne).Value = "0F4B1" Then Range("C" & NumeroLigne, "J" & NumeroLigne).Interior.color = 24535
NumeroLigne = NumeroLigne + 1
Wend
End Sub
Afficher la suite 

9 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 24/06/2016 à 22:53
+1
Utile
3
Oui ?
Et alors ? On se sert alors tout bêtement de l'évènement (Change) qui constate ce qui a été saisi en colonne C ( la colonne 3, donc) ===>>
If Target.Column = 3 And Target.Row >= 5 Then
Dim coul As Long
With ActiveSheet
derlig = .Range("C" & Rows.Count).End(xlUp).Row
Select Case Target.Text
Case "0Y4E": coul = 65535
Case "0D4A": coul = 255
' etc ....
Case Else: coul = RGB(255, 255, 255)
End Select
.Range("C" & Target.Row & ":" & "J" & Target.Row).Interior.Color = coul
End With
End If

Où est le problème ?

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Cette réponse vous a-t-elle aidé ?  
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 24 juin 2016 à 23:10
Mon cher Monsieur,
c'est un canevas de programme à remodeler en fonction de la feuille de travail !
Bien à vous et bon week-end !
TSAF16 > hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 25 juin 2016 à 12:39
Bonjour à vous.
Je vous sais gré pour vos conseils et assistance ! J'ai pris en compte toutes vos instructions et mon problème est complètement résolut
Bien à vous, TSAF16
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 25 juin 2016 à 20:55
Tant mieux pour vous et merci aussi aux interventions de Monsieur ucfoutu.
hbouia
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 24 juin 2016 à 18:03
0
Utile
Bonjour,
et qu'est-ce qui ne te satisfait pas (sois précis) dans ce code (au demeurant bien inutilement lourd ..) ?
Commenter la réponse de ucfoutu
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 24 juin 2016 à 20:22
0
Utile
Bonjour,

Vous pouvez tester quelque chose comme ça :

Sub color()
    Dim tcodes() As String, tcouleurs() As String
    codes = "_0Y4E_0D4A_0M4A_0L4E_0K4I_0B4S_0ED4A_0E4EA_0L4Y_0NK4M_0F4B1"
    couleurs = "_65535_255_5296274_225214_15478_23155_65435_65635_55635_37535_24535"
    tcodes = Split(codes, "_")
    tcouleurs = Split(couleurs, "_")
    zone = "CX:JX" 'Zone générique à colorier
    debut = ???
    fin = ???
    For i = debut To fin
        code = Cells(i, ???)
        k = 0
        While Trim(code) <> tcodes(k)
            k = k + 1
        Wend
    couleur = tcouleurs(k)
    zonei = Replace(zone, "X", Format(i))
        Range(zonei).Interior.color = couleur 
    Next i
End Sub


cordialement
hbouia
Commenter la réponse de hbouia
0
Utile
Salut ! Merci de porter un intérêt à ma préoccupation. Mon souci est qu'il faut que je rentre chaque fois dans l'éditeur VBA pour ré exécuter le code pour que ça fonctionne, or cela devrait se faire automatiquement. Donc le code de la ville est par exemple 0Y4E, si un nouvel enregistrement porte le même code, il devrait prendre la même couleur automatiquement Cordialement TSAF16
Commenter la réponse de TSAF16
0
Utile
Merci bien, je vais exécuter ce code pour me rassurer que ça marche. Bien à vous, TSAF16
Commenter la réponse de TSAF16
hbouia 87 Messages postés mardi 30 juillet 2013Date d'inscription 3 avril 2018 Dernière intervention - 24 juin 2016 à 23:13
0
Utile
Bonsoir Monsieur,
Votre proposition est meilleure par rapport à ce que je pensais.
Cordialement,
Bon week-end.
Commenter la réponse de hbouia

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.