Bonjour,
J’ai crée un planning représentant les mois et les années (pièce jointe), pour chaque mois il est possible de renseigner pour chaque jour le type d’événement (CA, RTT, RTC etc…), pour le moment ce changement n’est possible qu’ en effectuant le changement sur la feuille « planification » qui répercute sur la feuille « calendrier ».
Afin de pouvoir effectuer les changements d’événement directement dans la feuille « calendrier » je souhaite pouvoir faire un double-clic sur un jour, que le contenu de celle-ci s’efface , que le jour sélectionné s’affiche (par exemple si le jour sélectionné est le 12, que celui-ci s’affiche), qu’une boîte de dialogue apparaisse et me propose des événements via une liste déroulante (RTT, CA etc…) et que lorsque je clic sur un événement, que celui-ci s’affiche dans la case du jour sélectionné.
Pour avoir l’effet souhaité, j’ai vu sur internet la macro suivante :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'vérifier si les conditions d'utilisation de la macro sont validées
If Target.Column < 2 Or Target.Column > 8 Or Target.Row < 15 Or Target.Row > 20 Then Exit Sub
If Target.Value = 0 Then Exit Sub
'récupérer la date correspondant à la cellule de double-clic
laDate = DateValue(Replace(ActiveSheet.Range("B11"), "Focus : ", "")) + Left(Target.Value, 2) - 1
'Paramétrer le tableau
Dim letableau As ListObject
Set letableau = Worksheets("PLANIFICATION").ListObjects("tab_Events")
If Len(Target.Value) = 8 Then
'MsgBox "ajouter un événement"
'Ajouter un événement
letableau.DataBodyRange().Find(laDate).Offset(0, 3)= “CA”
Else
'MsgBox "supprimer l'événement"
'supprimer la valeur de la cellule correspondant à la bonne date
'dans le tableau des événements de la feuille PLANIFICATION
letableau.DataBodyRange().Find(laDate).Offset(0, 3).ClearContents
End If
ActiveSheet.Range("B14").Select
End Sub
Seulement dans la feuille « calendrier » quand je valide la macro, je peux sélectionner la case correspondant au jour mais en double cliquant dessus le texte s’efface mais je ne peux rien modifier, quand je clic sur une autre case le texte d’origine réapparaît.
Un message « débogage » apparaît sur la ligne :
letableau.DataBodyRange().Find(laDate).Offset(0, 3).ClearContents
j’ai regardé sur le net apparemment il faut changer la ligne avec celle-ci :
letableau.DataBodyRange().Find(DateValue(laDate)).Offset(0, 3).ClearContents
toujours pareil, ça ne fonctionne toujours pas.
Pourriez-vous me donner un coup de main SVP.
PS : je suis novice en la matière…
J’ai crée un planning représentant les mois et les années (pièce jointe), pour chaque mois il est possible de renseigner pour chaque jour le type d’événement (CA, RTT, RTC etc…), pour le moment ce changement n’est possible qu’ en effectuant le changement sur la feuille « planification » qui répercute sur la feuille « calendrier ».
Afin de pouvoir effectuer les changements d’événement directement dans la feuille « calendrier » je souhaite pouvoir faire un double-clic sur un jour, que le contenu de celle-ci s’efface , que le jour sélectionné s’affiche (par exemple si le jour sélectionné est le 12, que celui-ci s’affiche), qu’une boîte de dialogue apparaisse et me propose des événements via une liste déroulante (RTT, CA etc…) et que lorsque je clic sur un événement, que celui-ci s’affiche dans la case du jour sélectionné.
Pour avoir l’effet souhaité, j’ai vu sur internet la macro suivante :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'vérifier si les conditions d'utilisation de la macro sont validées
If Target.Column < 2 Or Target.Column > 8 Or Target.Row < 15 Or Target.Row > 20 Then Exit Sub
If Target.Value = 0 Then Exit Sub
'récupérer la date correspondant à la cellule de double-clic
laDate = DateValue(Replace(ActiveSheet.Range("B11"), "Focus : ", "")) + Left(Target.Value, 2) - 1
'Paramétrer le tableau
Dim letableau As ListObject
Set letableau = Worksheets("PLANIFICATION").ListObjects("tab_Events")
If Len(Target.Value) = 8 Then
'MsgBox "ajouter un événement"
'Ajouter un événement
letableau.DataBodyRange().Find(laDate).Offset(0, 3)= “CA”
Else
'MsgBox "supprimer l'événement"
'supprimer la valeur de la cellule correspondant à la bonne date
'dans le tableau des événements de la feuille PLANIFICATION
letableau.DataBodyRange().Find(laDate).Offset(0, 3).ClearContents
End If
ActiveSheet.Range("B14").Select
End Sub
Seulement dans la feuille « calendrier » quand je valide la macro, je peux sélectionner la case correspondant au jour mais en double cliquant dessus le texte s’efface mais je ne peux rien modifier, quand je clic sur une autre case le texte d’origine réapparaît.
Un message « débogage » apparaît sur la ligne :
letableau.DataBodyRange().Find(laDate).Offset(0, 3).ClearContents
j’ai regardé sur le net apparemment il faut changer la ligne avec celle-ci :
letableau.DataBodyRange().Find(DateValue(laDate)).Offset(0, 3).ClearContents
toujours pareil, ça ne fonctionne toujours pas.
Pourriez-vous me donner un coup de main SVP.
PS : je suis novice en la matière…