Exécuter automatiquement la coloration des lignes en fonction du

Résolu
TSAF16 - 24 juin 2016 à 16:47
hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 - 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

6 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 24/06/2016 à 22:53
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.
1
hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 12
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 !
0
TSAF16 > hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022
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
0
hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 12
25 juin 2016 à 20:55
Tant mieux pour vous et merci aussi aux interventions de Monsieur ucfoutu.
hbouia
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 juin 2016 à 18:03
Bonjour,
et qu'est-ce qui ne te satisfait pas (sois précis) dans ce code (au demeurant bien inutilement lourd ..) ?
0
hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 12
24 juin 2016 à 20:22
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
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci bien, je vais exécuter ce code pour me rassurer que ça marche. Bien à vous, TSAF16
0
hbouia Messages postés 112 Date d'inscription mardi 30 juillet 2013 Statut Membre Dernière intervention 22 novembre 2022 12
24 juin 2016 à 23:13
Bonsoir Monsieur,
Votre proposition est meilleure par rapport à ce que je pensais.
Cordialement,
Bon week-end.
0
Rejoignez-nous