Colorer une ligne en fonction d'un code couleur dans une cellule

Bonjour,
Je sais que la question a déjà été posée, j’ai d’ailleurs pris le temps d’appliquer la démarche mais ça ne marche pas, peut être que mon fichier a un problème.
En fonction du code couleur renseigné( numéro 1 à 7) dans la cellule/colonne B je souhaiterai que la ligne se colorie toute seule en fonction du code couleur (affiché en dessus de l’en tête) je souhaite le faire pour toutes les feuilles. Si pas de code pas de couleur.TAB COM Héberg essai 15.11.18.xlsx (345,7 Ko)

Ce fichier est mis en ligne sur notre réseau et renseigné par des intervenants extérieurs pas à l’aise avec Excel , il s’agit de leur faciliter la tâche.
J’ai parcouru les forums, testé plusieurs formule en passant par “mise en forme conditionnelle” et ça ne marche pas, manifestement je dois passer à côté d’une info importante.

Autre requête pour laquelle je n’ai trouvé que des macros que je ne maîtrise pas du tout :
J’aimerai qu’une fois une date de sortie renseignée dans les cellules de la colonne T, la ligne entière bascule (donc se supprime) pour se retrouver à la suite des autres dans la feuille sortie.
Je vous remercie.

Bonsoir isa

Je vous est mis les lignes de chaque onglet de la couleur de la légende sauf le N°5 puis que celui ci est blanc

mais si vous voulez mettre la couleur vous pouvez suivre la même chose que j’ais mis en MFC en espérant

que c’la vous convienne

Je vous met une image pour vous aidez a comprendre :wink:

MFC

Pour ce qui est des macros je suis comme vous je n’ais pas suffisamment de maitrise mais ne vous

inquiétez pas une âme charitable du forum ce feras un plaisir de vous venir en aide :wink:

je vous retourne votre classeur ======>TAB COM Héberg essai 15.11.18.xlsx (348,3 Ko)

Cdlt

@kiss6

Bonjour,
Bonjour Kiss

Une petite macro à placer dans le ThisWorkbook du classeur par Alt F11
Celle-ci fonctionne sur la feuille sélectionnée

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Déclaration des variables
Dim couleurs(), Ligne%, Dl%, Couleur%
  Dl = Range("A" & Rows.Count).End(xlUp).Row 'Derniére ligne remplie
    If Not Application.Intersect(Target, Range("B12:B" & Dl)) Is Nothing Then 'Sur changement d'une cellue en colonne B (de la ligne 12 à la dernière)
    Ligne = Target.Row 'N° de la ligne concernée
    Couleur = Cells(Ligne, 2)
      Select Case Couleur 'Choix de la couleur
        Case Is = 1
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(146, 208, 80)
        Case Is = 2
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(183, 222, 232)
        Case Is = 3
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(252, 213, 180)
        Case Is = 4
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(255, 255, 183)
        Case Is = 5
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(255, 255, 255)
        Case Is = 6
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(217, 217, 217)
        Case Is = 7
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(230, 184, 183)
        Case Else
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(255, 255, 255)
      End Select
    End If
  Exit Sub
End Sub

TAB COM Héberg essai 15.11.18.xlsm (353,2 Ko)

1 « J'aime »

MILLES MERCI !!!
J’avais compris le cheminement bien que vous n’avez pas précisé qu il faut sélectionner la zone avant ou faisable après il me semble, mais pour un novice il faut du b a ba… Heureusement je savais, c’est la formule qui n’allait pas.
Je vous suis très reconnaissante ! :+1: mais pouvez vous m’expliquer pourquoi dans tous les forums auprès desquels je trouvais des exemples de formule TOUTES contenaient des apostrophes au niveau du 7 pour mon exemple et c’est ce qui bloquait à chaque fois ! =$B12=“7”

Bonjour,

j’ai résolu mon premier problème via la mise en forme conditionnelle grâce à Kiss6, un détail dans la formule me coinçait. Aussi une macro ne semble pas nécessaire pour ma première question.

Et j’avoue que je ne comprends pas votre langage !
ThisWorkbook ???
ALT F11 : me règle la luminosité de mon PC…

Par contre puisque vous maîtrisez les macros peut être pouvez vous résoudre ma seconde question, :
J’aimerai qu’une fois une date de sortie renseignée dans les cellules de la colonne T, la ligne entière bascule (donc se supprime) pour se retrouver à la suite des autres dans la feuille sortie
il sera nécessaire en revanche de me faire un Pas à Pas sans omettre d’étapes, je suis vraiment novice en la matière…
Merci et bonne journée.
Isa

Bonjour isa

Si je ne me trompe les apostrophes sont mis pour du texte

Faite un essaie en mettant une lettre entre les apostrophes et vous verrez que c’la fonctionne :wink:

Si votre problème est résolue veuillez cocher

:white_check_mark: Marque la bonne réponse en cochant ce symbole sous le message :white_check_mark: C’est notre formule de politesse ici!

Cdlt

@kiss6

ah ok, alors quand c’est une lettre il faut apostrophe, et quand c’est un chiffre pas besoin ?

RE,

Voila vous avez tous compris , avez vous fait un essai je vous met une image

MFC%20lettre

et le classeur avec le changement a la place du 1 mettre “A”

=============>TAB COM Héberg essai 15.11.18.xlsx (348,4 Ko)

Cdlt

@kiss6

1 « J'aime »

oui ça marche !

UN GRAND MERCI

Pourrais je vous contacter si d autres petits soucis ?

RE ,

Pas de problème le forum est fait pour c’la avec plaisir si toute fois c’est dans mes compétence :wink:

Cdlt

@kiss6

Merci encore, vous êtes toujours beaucoup plus avancé que moi en la matière.
Bon week end et @ bientôt !

Re,

Avec la deuxième demande
(Je précise que j’ai laissé ma première macro, qui contrairement à mettre des MFC sur toutes les feuilles (là c’est 5 feuilles * 7 couleurs = 35 MFC), active la MFC directement par macro depuis le ThisWorkbook (qui n’est autre que le classeur)
Le fait de changer la muminosité de ton PC par ALT et la touche F11, vient d’un raccourci que tu as créé (ou alors, comme je suppose que c’est un portable, tu n’aurais pas confondu avec la touche Fonction ??)

Bref

Option Explicit

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Déclaration des variables
Dim couleurs(), Ligne%, Dl%, Couleur%
'
  Dl = Range("A" & Rows.Count).End(xlUp).Row 'Derniére ligne remplie
    If Not Application.Intersect(Target, Range("B12:B" & Dl)) Is Nothing Then 'Sur changement d'une cellue en colonne B (de la ligne 12 à la dernière)
    Ligne = Target.Row 'N° de la ligne concernée
    Couleur = Cells(Ligne, 2)
      Select Case Couleur 'Choix de la couleur
        Case Is = 1
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(146, 208, 80)
        Case Is = 2
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(183, 222, 232)
        Case Is = 3
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(252, 213, 180)
        Case Is = 4
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(255, 255, 183)
        Case Is = 5
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(255, 255, 255)
        Case Is = 6
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(217, 217, 217)
        Case Is = 7
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(230, 184, 183)
        Case Else
          Range(Cells(Ligne, 1), Cells(Ligne, 20)).Interior.color = RGB(255, 255, 255)
      End Select
      Exit Sub
    End If
    
   ' Je place une date ou autre sur la colonne T (Ligne 12 à la dernière remplie par rapport à la colonne A)
    If Not Application.Intersect(Target, Range("T12:T" & Dl)) Is Nothing Then 'Sur changement d'une cellue en colonne T (de la ligne 12 à la dernière)
    If ActiveSheet.Name = "SORTIES" Then Exit Sub 'Si c'est sur la feuille SORTIES, je sort de la procèdure
    Dl = Sheets("SORTIES").Range("A65").End(xlUp).Row + 1 'n° de la première ligne vide de la colonne A avant la 66 de la feuilles Sorties
      If Cells(Target.Row, 20) <> "" Then 'Si la cellule colonne T est remplie
        Application.EnableEvents = False 'Je désactive les évenements pour le changement de couleur
        Range(Cells(Target.Row, 1), Cells(Target.Row, 20)).Copy Sheets("SORTIES").Cells(Dl, 1) 'je copie la ligne concernée dans la 1ère ligne vide de la feuille SORTIE
        Range(Cells(Target.Row, 1), Cells(Target.Row, 20)).Delete Shift:=xlUp 'J'efface la ligne de la feuille concernée vers le haut
        Application.EnableEvents = True 'Je résactive les évenements pour le changement de couleur
      End If
    End If
End Sub

TAB COM Héberg essai 15.11.18.xlsm (352,2 Ko)

1 « J'aime »

Re,

Bonjour @Mimimathy

C’est sur que la macro est plus avantageuse que les MFC et c’la serait mieux pour “isa” d(utiliser la macro

plutôt que les MFC

Cdlt

@kiss6

mais la macro je copie colle dans MFC ?

Je capte rien !
Comme je vous l’ai dit un pas un pas, décrivant les étapes, avec copie d’écran pour une première fois me serait salutaire, mais peut être que c’est trop demandé je vous l’accorde, mes compétences actuelles sont limitées…

Je travaille chez moi sur un pc portable et au boulot sur un pc en réseau

Je prendrai le temps ce week end j’espère pour me plonger dans votre solution macro si vous m’indiquez les démarches dans un langage compréhensible pour novice en évitant abréviation/ anglais…
Ben oui, 55 ans, autodidacte et tant de choses à apprendre encore mais j’ai mes limites…

Merci pour tout

Re,

Une macro n’a rien à voir avec les MFC
et pour les abréviations “Anglais” désolé, je ne suis pas Bill Gates, et le langage VBA (comme d’ailleurs la majorité des langages de programmation) sont en anglais
Ma macro est détaillée par les explications en lettres verte depuis le Visual Basic que l’on ouvre par l’appui de la touche ALT et de la touche F11
Au cas où, tu n’arrives pas à l’ouvrir, clic droit sur le nom d’un onglet et choisir visualiser le code
dans le menu de gauche, double clic sur le mot “ThisWorkbook” et tu auras la macro

Celle-ci est déjà en place dans le classeur qui est en PJ de mon dernier message et elle est opérationnelle.

ok

j 'ai bien compris que la macro est en anglais et je ne cherche d’ailleurs pas à traduire ni comprendre

c 'était le cheminement , je pensais qu il fallait que je colle votre code macro dans MFC ou ailleurs pour vous dire

j ai ouvert le document et si la macro est en place, ça ne fonctionne pas, j’ai testé, il faut que la ligne qui contient une date de sortie soit reportée intégralement dans la feuille sortie et si possible qu’elle disparaisse dans sa feuille d’origine.

Re,

C’est ce que la macro fait :wink:

Teste-tu avec mon classeur ?
tu places une date dans une cellule de la colonne T, tu valides par la touche ENTREE et c’est automatique

oups
pour le coup j ai pas du ouvrir le bon

je viens de recommencer CA MARCHE !

je vous suis aussi très reconnaissante

j espère pouvoir utiliser cette macro en la copiant sur mon document d’origine qui est le même sauf qu il contient des données que je ne peux divulguer

est ce difficile de copier cette macro ?

Re,
Tu copies colle tout ce qui est dans le ThisWorkbook pour la mettre dans le ThisWorkbook final