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

Signaler
-
Messages postés
110
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
27 avril 2021
-
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

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
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.
Messages postés
110
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
27 avril 2021
12
Mon cher Monsieur,
c'est un canevas de programme à remodeler en fonction de la feuille de travail !
Bien à vous et bon week-end !
>
Messages postés
110
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
27 avril 2021

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
Messages postés
110
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
27 avril 2021
12
Tant mieux pour vous et merci aussi aux interventions de Monsieur ucfoutu.
hbouia
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
237
Bonjour,
et qu'est-ce qui ne te satisfait pas (sois précis) dans ce code (au demeurant bien inutilement lourd ..) ?
Messages postés
110
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
27 avril 2021
12
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
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
Merci bien, je vais exécuter ce code pour me rassurer que ça marche. Bien à vous, TSAF16
Messages postés
110
Date d'inscription
mardi 30 juillet 2013
Statut
Membre
Dernière intervention
27 avril 2021
12
Bonsoir Monsieur,
Votre proposition est meilleure par rapport à ce que je pensais.
Cordialement,
Bon week-end.