Liste déroulante pour choisir sa couleur de fond
Hello
J'ai un souci, je n'arrive pas à créer une liste déroulante qui proposerait plusieurs couleurs prédéfinis pour coloriés seulement le fonds de la celulle. Et ne pas pouvoir choisir d'autres couleurs pour cette cellule.
Exemple:
J'aimerai clicker sur un jour travaillé du fichier joint et qu'une liste déroulante de couleur apparait pour me proposer des couleurs prédéfinies, jours fériés (gris), CP(rose), RTT (jaune) .
Est ce que c'est possible par VBA ?.
Merci pour votre aide.
Bonjour
Attention : Pas une solution à ton problème
Juste un délire personnel (en cherchant une solution)
Merci d'avoir passer un peu de tps sur mon problème.
J'ai compris ce que tu voulais faire
Bonsoir Banzai64
Je cherche sur son principe de codage,
franchement SUPER ton programme. Sa bugger chez moi puis j'ai retirer le "I" devant plage à la 7éme ligne en partant de la fin
"For Each Cel In Plage"
Peux tu m'aider pour faire la meme chose car c'est exactement ce qu'il me fallait mais je n'arrive pas à trouver comment tu fais ta programmation de couleur et textbox?
Merci par avance
Bonjour
Ne voyant plus Banzai64 depuis quelque temps, je me permet de vous commenter sa macro
En espérant que cela vous suffise pour la comprendre
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cel As Range, Plage As Range
Static Couleur As Long
Dim Msg As String
'Début du test de la cellule sélectionnée
If Not Intersect(Range("E12:E15,J13,J15"), Target) Is Nothing And Target.Count = 1 Then
'si l'on click sur les cellules de E12 à E15 ou J13 ou J15 et qu'une seule cellule est sélectionnée
Couleur = Target.Interior.Color
'on met en mémoire la couleur de la cellule sélectionnée
Msg = "Actuellement en cours : "
'on met en mémoire dans msg le text
If Target.Address = "$J$15" Then
'si la cellule sélectionnée est J15
Msg = Msg & "Sans effet"
'on ajoute sans effet au message actuellement en cours
Couleur = 0
'on met 0 dans la mémoire couleur
ElseIf Target.Address = "$E$12" Then
'sinon si la cellule sélectionnée est E12
Msg = Msg & "Efface"
'on ajoute Efface au message actuellement en cours
Else
'sinon
Msg = Msg & Target.Offset(0, 1)
'on ajoute le contenu de la cellule a droite de la cellule sélectionnée au message actuellement en cours
End If
'fin du test de la cellule sélectionnée
ActiveSheet.Shapes("Zone de texte 6").TextFrame.Characters.Text = Msg
'on inscrit le text du msg dans la zone de texte6
'Début du test de la cellule sélectionnée
ElseIf Not Intersect(Range("E20:K35"), Target) Is Nothing Then
'si l'on click sur les cellules de E20 à K35
If Couleur = 0 Then Exit Sub
'si la mémoire de la couleur est 0 alors on sort de la macro
Set Plage = Intersect(Range("E20:K35"), Target)
'on détermine la zones des cellules sélectionnables à colorer
If Plage.Count > 1 Then
'si plusieurs cellules sont sélectionnées
If MsgBox("Attention vous êtes sur le point de modifier plusieurs cellule" & vbCr & _
"Voulez-vous continuer ?", vbCritical + vbYesNo + vbDefaultButton1, _
"Opération irréversible") <> vbYes Then Exit Sub
'on affiche un massage "Attention ..." et si la réponse est différente de OUI alors on sort de la macro
End If
Application.ScreenUpdating = False
'on désactive le rafraichissement de l'écran afin de ne pas voir les cellules clignoter
For Each Cel In Plage
'pour toutes les cellules sélectionnées dans la plage autorisée de E20 à K35
If Cel <> "" Then
'si la cellule n'est pas vide
Cel.Interior.Color = Couleur
'on applique la couleur mise en mémoire
End If
Next Cel
' on passe à une autre cellule de la plage sélectionnée
End If
'fin du test de la cellule sélectionnée
End SubBonjour BOB,
Merci pour ta réponse, je débute sur VBA pour des rapports d'interventions avec macro.
Ton detail de la programmation est parfait.
De ce qu'il me reste à comprendre, ces les TextBox créés, il y a aussi autre choses de parametrer autres que le programme et c'est ce que je recherché.
Merci beaucoup Bob
Cordialement