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
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 SubRestant à 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 SubPrivate 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 SubRestant à 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 SubPrivate 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 SubMerci au top je vais essayer et si besoin je reviens vers toi