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

- - Dernière réponse : hbouia
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
- 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 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
1
Merci
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.

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

hbouia
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
-
Mon cher Monsieur,
c'est un canevas de programme à remodeler en fonction de la feuille de travail !
Bien à vous et bon week-end !
> hbouia
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
-
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
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
-
Tant mieux pour vous et merci aussi aux interventions de Monsieur ucfoutu.
hbouia
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
0
Merci
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
Merci
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
Merci
Merci bien, je vais exécuter ce code pour me rassurer que ça marche. Bien à vous, TSAF16
Commenter la réponse de TSAF16
Messages postés
90
Date d'inscription
mardi 30 juillet 2013
Dernière intervention
22 novembre 2018
0
Merci
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.