Selectionner des plages pour colorer auto.

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
J'ai développé un petit fichier d'absences le code est :
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("C5:L22")) Is Nothing Then
With Target
'If Selection.Interior.ColorIndex = 6 Then
'MsgBox " C'est un jour férié , modifiez votre sélection "
'Exit Sub
'End If
If Selection.Interior.ColorIndex = 3 Then
Selection.Interior.ColorIndex = xlNone
Else
Selection.Interior.ColorIndex = 3
End If
End With
End If
End Sub
Mon But est de pouvoir l'intégrer à un fichier plus complexe récupéré ( Ici ..? je sais plus ou) très intéressant , j'y ai déjà apporté des modif
Afin d'avoir une idée ou solution plus rapide que tout seul dans mon coin à chercher??
Comment incorporer ce code dans ce fichier ? la finalité serait de remplacer la couleur , ici en DUR ( rouge=3)
en cliquant sur un fond prédéfini comme Matin =jaune , AM=Bleu
J'aurai CP=jaune, RTT=Orange Maladie=Rouge
Puis de reporter cette couleur en selectionnant une plage ( comme je fais dans le petit bout de code)
Je sais c'est pas évident , mais je pense qu'il y a des BARBA... très compétent pour ce genre de Pb !!!!
merci
 

Pièces jointes

  • Calendrier&Planning.xlsm
    183.8 KB · Affichages: 74

Lone-wolf

XLDnaute Barbatruc
Bonjour Hervé

Je ne sais pas si c'est la bonne solution, à adapter à ton cas.Et change aussi le titre du post, par-ce que inserer un code et modifier la couleur d'une sélection, ce n'est pas la même chose.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D10:AZ50")) Is Nothing Or Target.Count > 1 Then Exit Sub
Select Case UCase(Target.Value)
    Case "AM"
        Target.Interior.ColorIndex = 4
        Target.Font.ColorIndex = 4
    Case "PM"
        Target.Interior.ColorIndex = 3
        Target.Font.ColorIndex = 3
    Case "MD"
        Target.Interior.ColorIndex = 33
        Target.Font.ColorIndex = 33
    Case "CG"
        Target.Interior.ColorIndex = 6
        Target.Font.ColorIndex = 6
    Case Else
        Target.Interior.ColorIndex = xlNone
        Target.Font.ColorIndex = 0
End Select
End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour , et comme dit JC : Salut Loup Seul
Merci , mais ce n'est pas ce que j'attends , je cherche à simplifier la saisie des employés
Le bout de code vient d'un fichier ou j'ai la liste par nom et 1 sem/feuille : On selectionne une Cel. on étend vers la droite et le clic droit met tout en rouge
Donc je pensais intégrer cette idée dans un calendrier et comme je cherche les complications avoir le choix des couleurs par légende : Jaune = CP , Orange = RTT , Rouge= Maladie ..etc
Là je vais fouiner pour étudier la possiblité de clic sur une ou plage de Cel. et que s'ouvre une liste déroulante justement avec cette légende ensuite le traitement colorera !!! je vais voir si possibilité et pas usine à gaz !!
 

herve62

XLDnaute Barbatruc
Supporter XLD
Ca y est , j'emmerge
Non ce n'est pas dans ce code que je cherche à modifier mais dans le GROS fichier calendrier
En plus ca colore Toute la ligne ( entirerow) moi dans le 1er fichier ça allait de 1 à 10 cel. max
Maintenant si par exemple , la personne pose 2 sem de CP du 04/01 > elle clique en D10 étend jusque E21
et avec clic droit ca colore ,, reste à savoir comment faire pour le choix Motif absence et couleur ???
 

pierrejean

XLDnaute Barbatruc
Bonjour Herve
Salut Lone-Wolf

Vois si tu peux t'inspirer de ceci (feuil3 )
Faire un copier/coller de l'un des motifs (ou le taper directement) , élargir la sélection et cliquer à droite
 

Pièces jointes

  • Calendrier&Planning.xlsm
    186.6 KB · Affichages: 71

Lone-wolf

XLDnaute Barbatruc
Re Hervé, Bonjour Pierre-Jean

VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim dercol As Long, col As Long, c As Long, rw as long
If Intersect(Target, Range("d1:o1000")) Is Nothing Or Target.Count > 1 Then Exit Sub

'À remplacer par la dernière colonne remplie
dercol = Columns("O").Find("*", Range("O1"), , , , xlPrevious).Column

For col = ActiveCell.Column To dercol
c = c + 1
For rw = 0 to 4
Target.Offset(rw, c - 1).Interior.Color = vbRed
Next rw
Next col
Cancel = True
End Sub
 
Dernière édition:

herve62

XLDnaute Barbatruc
Supporter XLD
Désolé Lone wolf , ta sub ne va pas car
la plage est rigide si je dis que ma dercol est AW ( vrai) que je me mets en D cela colore TOUT et sur 5 lignes
On va prendre un exemple de ce qu'il faudrait : si c'est la semaine
Donc je pose CP du 4/01 au 08/01 > je selectionne D10 -E14 et un clic me met en Rouge ou autre couleur de mon choix
Pierre Jean : Faire un copier/coller : on fait les 2 ?? sinon si c'est juste copier un Motif , puis selectionner une plage > coller
Pas besoin de code ??
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
503
Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 155
dernier inscrit
lombrik