Ajouter un calendrier sur excel dans deux cellules distinctes

Résolu
Tyrese3 Messages postés 16 Statut Membre -  
Tyrese3 Messages postés 16 Statut Membre -
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

3 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. Tyrese3 Messages postés 16 Statut Membre
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  3. Tyrese3 Messages postés 16 Statut Membre
     
    Merci beaucoup,

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