Titre du sujet : Re: Adapter le mDF_Calendar par myDearFriend! le 14/05/2008 22:35:04
Bonsoir Hadidman, le Forum,
Citation : Hadidman a écrit: Je viens de réessayer et ça fonctionne ) J'ai du supprimer une ligne en fait et c'est pour cela que ça ne marchait pas
Humm... j'avais bien compris ça oui... tu me rassures lol !
Citation : Hadidman a écrit: Le problème, c'est que lorsque je passe ma souris sur ce calendrier, la surbrillance disparait automatiquement, et donc lorsqu'à partir du calendrier, je clique sur un chiffre (il est en surbrillance) mais je bouge la souris d'un millimètre et la surbrillance disparait En fait, je pense qu'il faudrait désactiver la surbrillance au passage de la souris (je vais chercher un petit peu dans votre code, pour voir comment désactiver cela )
Eh bien, finalement, tu ne veux plus garder grand chose de ce calendrier... :mind:
Désactiver la surbrillance au passage de la souris, c'est facile, il te suffit de commenter ou supprimer la procédure ci-dessous dans le module de classe mDFcalClass :
'Private Sub lblJGroup_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' TranspJour
' lblJGroup.BackStyle = fmBackStyleOpaque
' lblJGroup.ForeColor = &HFFFFFF
'End Sub
... et de faire la même chose pour l'évènement suivant du Userform mDFcalendrier :
'Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' TranspJour
'End Sub
Mais comme je te vois venir... tu vas t'apercevoir que la surbrillance du jour J n'est plus géré correctement si tu navigues ensuite entre les mois du calendrier (par les 2 boutons latéraux en forme de triangle)... j'ai donc également modifié la procédure MAJCalend() comme suit :
'Ajout d'un argument optionnel "Surligne" à la procédure MAJCalend
Private Sub MAJCalend(D As Date, Optional Surligne As Boolean)
Dim JS As Integer
Dim V As Integer
Dim JM As Byte
Dim N As Byte
Dim ND As Date
'Ajout de ce code ==============================
Static DatEnCours As Date
TranspJour
If Surligne Then DatEnCours = D
'===============================================
txtAn.Visible = False
lblMois = Format(D, "mmmm")
lblAn = Format(D, "yyyy")
DetermJFériés lblAn
JS = Weekday(DateSerial(Year(D), Month(D), 1), vbMonday)
JM = Day(DateSerial(Year(D), Month(D) + 1, 1) - 1)
For N = 1 To 37
V = N - JS + 1
If V > 0 And V <= JM Then
ND = DateSerial(Year(D), Month(D), V)
J(N).lblJGroup.BorderStyle = fmBorderStyleNone
J(N).lblJGroup.ControlTipText = ""
If ThisWorkbook.Worksheets("Prefs").Range("A3") Then
If JFerie(ND) > 0 Then
J(N).lblJGroup.BorderStyle = fmBorderStyleSingle
J(N).lblJGroup.ControlTipText = JF(JFerie(ND), 2)
End If
End If
J(N).lblJGroup.Caption = V
J(N).lblJGroup.Font.Bold = ND = Date
J(N).lblJGroup.Font.Underline = ND = Date
J(N).lblJGroup.Visible = True
'================================================================
' Nouvelle modification de cette partie de code... je teste non plus la date d'affichage du calendrier
' mais la date qui était précédemment sélectionnée dans la feuille de calcul (DatEnCours)
If DateSerial(Year(D), Month(D), V) = DatEnCours Then
J(N).lblJGroup.BackStyle = fmBackStyleOpaque
J(N).lblJGroup.ForeColor = &HFFFFFF
End If
'================================================================
Else
J(N).lblJGroup.Visible = False
End If
Next N
Me.Repaint
End Sub
... et j'ajoute un argument Surligne=True lors de l'appel de MAJCalend depuis l'évènement Initialize() du Userform :
MAJCalend .Range("B1"), True
Et donc, maintenant, ton calendrier fonctionne correctement dans les deux sens : [list] [*]un clic sur une date dans la feuille de calcul affiche le calendrier et met le jour en surbrillance. [*]et à l'inverse, un clic dans le calendrier et c'est la sélection sur feuille de calcul qui se déplace au bon endroit. [/list]
Citation : Hadidman a écrit: Sinon un autre problème, lorsque je clique sur une date (sur le classeur Excel), le calendrier apparait, mais il apparait au milieu de la feuille, alors que j'aimerais qu'il reste tout le temps dans le coin en haut à droite de la feuille. Est-ce possible de modifier cela ?
Toujours dans l'évènement Initialize() du Userform, je modifie le code comme suit :
' Placer le calendrier en haut et à droite =========================
'Me.Width = 126.75
Me.StartUpPosition = 0
Me.Move Application.Left + Application.Width - 136.75, 10, 126.75
'====================================================================
Et pour que tout ça te paraisse plus clair, tu trouveras ci-joint la .xla intégrant l'ensemble de ces modifications et le fichier.xls qui va avec.
Si tu penses que la question d'origine de ce fil de discussions est résolue, merci de solder le présent sujet.
Je pense que je vais te laisser continuer la suite de ton projet seul maintenant. En cherchant un peu, tu devrais pouvoir te débrouiller je pense... (Je te l'ai dit plus haut : dépecer cette application comme ça, pour moi, c'est une torture... )
Bonne continuation,
Cordialement,
|