Ajouter un calendrier sur excel dans deux cellules distinctes

Résolu/Fermé
Tyrese3 Messages postés 15 Date d'inscription vendredi 28 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 - 3 juil. 2013 à 18:21
Tyrese3 Messages postés 15 Date d'inscription vendredi 28 juin 2013 Statut Membre Dernière intervention 21 octobre 2013 - 4 juil. 2013 à 14:37
Bonjour,

J'ai recherche sur le forum un moyen de pouvoir inserer un calendrier sur excel afin de pouvoir choisir le jour, le mois et l'année.

Voici l'objet de mes recherches ci-dessous:

Pouvez-vous me dire ce qu'il faut modifier ou rajouter dans cette macro afin de pouvoir consulter le calendrier en cellule B14 et en cellule D14.

Concrètement, je voudrai pouvoir choisir la date à deux niveaux.

Du ............ au ............ pour spécifier une periode de congés par exemple.

Pouvez-vous m'aider ? Je vous en remercie par avance.



Option Explicit

Private Sub Calendar1_Click()
Range("A3").Value = Calendar1.Value
End Sub
'

Private Sub Calendar1_LostFocus()
Calendar1.Visible = False
End Sub
'

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Intersection As Range, Plage As Range

Set Plage = Range("A1")

Set Intersection = Application.Intersect(Target, Plage)
If Not (Intersection Is Nothing) Then
Calendar1.Visible = True
End If

End Sub
A voir également:

3 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 juil. 2013 à 19:18
Bonjour,

un fichier avec ton Contrôle serait mieux.
Il y a tellement de versions différentes et de problèmes d'activation.

Atout hasard, sans tester :
Private Sub Calendar1_Click()
activecell.Value = Calendar1.Value
End Sub
'

Private Sub Calendar1_LostFocus()
Calendar1.Visible = False
End Sub
'

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim Intersection As Range, Plage As Range

Set Plage = union(Range("B14"),Range("D14"))

Set Intersection = Application.Intersect(Target, Plage)
If Not (Intersection Is Nothing) Then
Calendar1.Visible = True

End If

End Sub

avant l'affichage du calendar tu pourrais ajouter :
calendar1.top=activecell.offset(1).top
calendar1.left=activecell.offset(1).left

eric
0
Tyrese3 Messages postés 15 Date d'inscription vendredi 28 juin 2013 Statut Membre Dernière intervention 21 octobre 2013
4 juil. 2013 à 10:43
Bonjour Eric,

Je te remercie pour ta réponse.

Néanmoins, il y a juste une petite chose qui me dérange.

Lorsque je clique sur la cellule C14, D14 ou C37 le calendrier apparait jusque là tout va bien.
Mais lorsque le calendrier apparait et que je ne choisi pas encore de date et que je place par hasard avec la souris sur une autre cellule la date apparait dans cette autre cellule.
Peux-tu modifier la macro afin que sa ne puisse pas faire cela ?
Je te remercie d'avance pour ta réponse.

Est-ce que c'est possible d'avoir deux macros distinctes (donc 2 boutons) dans la meme feuille ?
Je m'explique: la cellule C37 se trouvant un peu plus en bas dans ma feuille.
Lorsque je clique en C37 le calendrier apparait au niveau des cellules B14 et D14.
De ce fait, pour voir le calendrier je suis obligé de remonter la page.
Y-a-t-il une solution pour voir le calendrier au même niveau que la cellule C37.
Concernant les deux autres cellules B14 et D14 le calendrier me convient à l'endroit ou il apparaît.

Voir fichier ci-joint:

http://cjoint.com/data3/3GekNcObAJm_test_calendrier.xlsm
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
4 juil. 2013 à 11:36
Bonjour,

désolé mais je ne peux rien tester, je n'ai pas cette version de calendar.

Mais lorsque le calendrier apparait et que je ne choisi pas encore de date et que je place par hasard avec la souris sur une autre cellule la date apparait dans cette autre cellule.
Il faut que tu le masques si ce n'est pas une cellule désirée.

Y-a-t-il une solution pour voir le calendrier au même niveau que la cellule C37.
C'était le but des 2 lignes que je te proposais d'ajouter.

essaie :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Intersection As Range, Plage As Range
    Set Plage = Union(Range("B14"), Range("D14"), Range("C37"))
    Set Intersection = Application.Intersect(Target, Plage)
    If Not (Intersection Is Nothing) Then
        calendar1.Top = ActiveCell.Offset(1).Top
        calendar1.Left = ActiveCell.Offset(1).Left
        calendar1.Visible = True
    Else
        calendar1.Visible = False
    End If
End Sub

Sinon il faudra attendre qcq'un qui a la version 2007 et qui pourra tester en réel.

eric
0
Tyrese3 Messages postés 15 Date d'inscription vendredi 28 juin 2013 Statut Membre Dernière intervention 21 octobre 2013
4 juil. 2013 à 14:37
Merci beaucoup,

C'est génial !ça marche ! :-)
0