Mise en forme cellule

Bonjour,

J'ai besoin d'un petit coup de main

Je suis en train de faire un planning pour le travail, et ma demande est simple.

Quand je mets par exemple 1 pour un jour travaillé ou 0.5 si un demi jour, je voudrais que la mise en forme de la cellule soit mise en fonction du nom qu'il y a en face.

Sachant que pour chaque projets la personne peut être amener à etre modifier à l'aide de la liste.

Merci pour votre aide

Bonne journée à vous !

Bigdaddyaurel

7book1.zip (18.16 Ko)

Salut BigDaddy,

Salut le Forum,

Tu trouveras ci-joint une manière de procéder via un Private_Sub

Le code :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x As Long, y As Long
'Si la colonne selectionné est supp à 9 alors on quitte la procédure
'Si la colonne selectionné est infé à 3 alors on quitte la procédure
'Si la ligne selectionné est inféri à 5 alors on quitte la procédure
If Target.Column >= 9 Or Target.Column <= 3 Or Target.Row <= 5 Then
    Exit Sub
End If
'Si le contenu de la cellule selectionné est supprimé, on remet cette cellule à blanc
If Target.Value = "" Then
    x = Target.Row
    y = Target.Column
    Cells(x, y).Interior.Pattern = xlNone
End If
'Si le contenu de la cellule selectionné est égal à un, on met au format de la cellule à gauche
If Target.Value = "1" Or Target.Value = "0,5" Then
    Application.EnableEvents = False
    x = Target.Row
    y = Target.Column
    Cells(x, 3).Copy
    Cells(x, y).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Application.EnableEvents = True
End If
End Sub

Restant à dispo !

Merci pour ta réponse, mais ce n'est pas tout à fait ce que je souhaite ....

Car, je souhaite concerver les listes déroulantes avec la mise en place de couleurs en fonction de chaque personnes.

N'y a-t-il pas moyen de le faire avec une mise en forme conditionnelle ?

Dans cette esprit : ( mise en forme à mettre pour les cellule ou il y a le nombre de jours travaillés.

ex: je suis en F8, et je mets 1 ( voir mon post initiale pour le fichier excel)

SI "AD" présent dans la cellule C8, alors mettre la meme mise en forme que C8

Je ne sais pas si je m'explique clairement ....

Merci pour ta réponse, mais ce n'est pas tout à fait ce que je souhaite ....

Car, je souhaite concerver les listes déroulantes avec la mise en place de couleurs en fonction de chaque personnes.

N'y a-t-il pas moyen de le faire avec une mise en forme conditionnelle ?

Dans cette esprit : ( mise en forme à mettre pour les cellule ou il y a le nombre de jours travaillés.

ex: je suis en F8, et je mets 1 ( voir mon post initiale pour le fichier excel)

SI "AD" présent dans la cellule C8, alors mettre la meme mise en forme que C8

Je ne sais pas si je m'explique clairement ....

Re BigDaddy,

N'y a-t-il pas moyen de le faire avec une mise en forme conditionnelle ?

Malheureusement non :/

Dans cette esprit : ( mise en forme à mettre pour les cellule ou il y a le nombre de jours travaillés.

ex: je suis en F8, et je mets 1 ( voir mon post initiale pour le fichier excel)

SI "AD" présent dans la cellule C8, alors mettre la meme mise en forme que C8

J'ai refais ton fichier toujours via macro, en prenant en compte les liste déroulantes de ta colonne C

Option Explicit
Public x As Long
Public y As Long
Private Sub Worksheet_Change(ByVal Target As Range)
'Si la colonne selectionné est supp à 9 alors on quitte la procédure
'Si la colonne selectionné est infé à 2 alors on quitte la procédure
'Si la ligne selectionné est inféri à 5 alors on quitte la procédure
If Target.Column >= 9 Or Target.Column <= 2 Or Target.Row <= 5 Then
    Exit Sub
End If
x = Target.Row
y = Target.Column
'Si le contenu de la cellule selectionné est supprimé, on remet cette cellule à blanc
If Target.Value = "" Then
    Cells(x, y).Interior.Pattern = xlNone
End If
'Changement de personne en colonne C
If Target.Value = "AO" Then
    Cells(x, y).Interior.Color = 5296274
    Call ModifLigne
ElseIf Target.Value = "SC" Then Cells(x, y).Interior.Color = 15773696
Call ModifLigne
ElseIf Target.Value = "AD" Then Cells(x, y).Interior.Color = 49407
Call ModifLigne
End If
'Si le contenu de la cellule selectionné est égal à un, on met au format de la cellule à gauche
If Target.Value = "1" Or Target.Value = "0,5" Then
    Application.EnableEvents = False
    Cells(x, 3).Copy
    Cells(x, y).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Application.EnableEvents = True
End If
End Sub
Private Sub ModifLigne()
Dim a As Long, b As Long
a = 8
Application.EnableEvents = False
For b = 4 To a
    If Cells(x, b) = "1" Or Cells(x, b) = "0,5" Then
        Cells(x, 3).Copy
        Cells(x, b).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Application.EnableEvents = True
    End If
Next
Application.EnableEvents = True
Cells(x, 3).Select
End Sub

Restant à dispo

merci c'est parfait comme cela;

Juste est-ce que je peux copier tes ligne de codes pour les intégrer dans un planning ?

Je dois modifier quels paramètres ?

Le fameux coup du fichier test // fichier original xDDD

Tu a tout les paramètres à changer x)

Si tu ne t'y connais pas en VBA tu peux me mettre ton fichier avec ton tableau original que je fasse correspondre les champs

C'est que je ne peux pas faire celà pour des raisons de confidentialité par rapport à mon travail ....

Je vais essayer de décortiquer ton code t voir si je m'en sort lol

Sinon tu peux me dire à peu près les endroits qui sont suceptibles d'être modifié ?

Re,

Voici ci-dessous mon code avec (en vert) ce que tu dois modifier

Je reste à ta dispo si tu a des questions :

Option Explicit
Public x As Long
Public y As Long
Private Sub Worksheet_Change(ByVal Target As Range)
x = Target.Row
y = Target.Column
'Ces 3 lignes tu peux les laisser tel quel
If Target.Value = "" Then
    Cells(x, y).Interior.Pattern = xlNone
End If
'Ces lignes tu peux les laisser tel quel
If Target.Value = "AO" Then
    Cells(x, y).Interior.Color = 5296274
    Call ModifLigne
ElseIf Target.Value = "SC" Then Cells(x, y).Interior.Color = 15773696
Call ModifLigne
ElseIf Target.Value = "AD" Then Cells(x, y).Interior.Color = 49407
Call ModifLigne
End If
'Ici il y a une modification :
If Target.Value = "1" Or Target.Value = "0,5" Then
    Application.EnableEvents = False
'Il faut que tu modifie le Cells(x,3) par Cells(x,k)
'k étant ton numéro de colonne correspondant à ton "Qui"
'par exemple, la colonne A est égal à 1, la colonne B est égal à 2 etc...
'Tu continue sur cette logique jusqu'a obtenir ton bon numéro de colonne
    Cells(x, 3).Copy 'Le Cells(x,k)
    Cells(x, y).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Application.EnableEvents = True
End If
End Sub
Private Sub ModifLigne()
Dim a As Long, b As Long
'Ici il faut que tu change le a = k
'k étant le numéro de colonne de la fin de ton tableau de la où tu met les 1
a = 8
Application.EnableEvents = False
'Ici il faut que tu change le b = k
'k étant le numéro de colonne où commence ton tableau la où tu met tes 1
For b = 4 To a
    If Cells(x, b) = "1" Or Cells(x, b) = "0,5" Then
'Il faut que tu modifie le Cells(x,3) par Cells(x,k)
'k étant ton numéro de colonne correspondant à ta colonne "Qui"
        Cells(x, 3).Copy
        Cells(x, b).Select
        Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
        Application.EnableEvents = True
    End If
Next
Application.EnableEvents = True
'Il faut que tu modifie le Cells(x,3) par Cells(x,k)
'k étant ton numéro de colonne correspondant à ta colonne "Qui"
Cells(x, 3).Select
End Sub

Merci au top je vais essayer et si besoin je reviens vers toi

Rechercher des sujets similaires à "mise forme"