Excel : existe-t-il un calendrier ? [Résolu/Fermé]

Signaler
-
 Tachounette -
Bonjour,

Sous Excel : existe-t-il un calendrier qui apparaissent sous la forme d'une fenetre, et lorsque l'on clique sur une jour de ce calendrier, ce jour s'affiche dans la cellule precedemment selectionné.

Le tout pour accelerer la saisie de dates à l'intérieur d'un mois ?

Je me demande si cela existe dans une quelconque fonction Excel ou s'il fallait le programmer.

Merci pour vos infos.

23 réponses

Bonjour
en effet, il existe un calendrier sur Excel pour afficher la fenetre en cliquant sur cellule...
il faut aller dans affichage/barre d'outils/boite à outils controles

la fenetre de controles s'affiche puis il faut aller tout en bas de cette fenetre et appuyer sur autres controles (dessin : marteau et clé) puis appuyer sur : controle calendrier

une fenetre VBA s'affiche, vous revenez sur le fichier excel et vous modifiez les dimentions, couleur...

puis clic droit sur la fenetre du calendrier et puis sur visualiser code

ensuite, dans la fenetre VBA vous avez ça qui s'affiche :

Private Sub Calendar1_Click()

End Sub

au lieu de click il faut se mettre sur lostfocus en le choisissant dans la liste
et on obtient :

Private Sub Calendar1_LostFocus()

End Sub

après il faut taper le code suivante entre les deux lignes :

Calendar1.Visible = True

donc ceci permet de faire disparaitre la fenetre
puis c là ke je viens le problème car j'arrive à faire disparaitre la fenetre calendrier quand je clic à l'extérieur mais pas à l'afficher en clicant sur la cellule...

je m'y suis mis il y a 30min puis en cherchant l'aide sur le net j'ai vu ce forum alors je vous avance un peu et puis si vous avez fait plus, merci de me le signaler

bon courage

Hichamzone
82
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

bonjour
je vous remercier bcp pour vous aides et vous conseil j'ai suivi tout les etapes le programe est reussi merci
imane Ennassiri de Maroc
C'est bon j'ai trouvé il fallait mettre :

Private Sub Calendar1_Click()
' Met la date sélectionnée dans la cellule active
ActiveCell.Value = Calendar1.Value
' Masque le calendrier
Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Row >= 8 And Target.Row <= 107 Then
' Si la cellule sélectionnée est dans la plage qu'on veut lier au calendrier,
' on affiche le calendrier
Calendar1.Visible = True
' Place le calendrier à côté de la cellule
Calendar1.Top = ActiveCell.Top
Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Else
' Sinon, on masque le calendrier
Calendar1.Visible = False
End If
End Sub

J'ai mis les commentaires pour que chacun puisse voir les étapes.

Voilà ca peut toujours servir.
Laissons faire tous ces codes, rien de plus simple, le calendrier est super convivial et bien fait, il ne reste plus qu'à le télécharger à l'adresse suivante: http://www.mdf-xlpages.com/modules/publisher/item.php?itemid=28
Juste trop bien et compatible avec Excel 2010
Oui mais si quelqu'un d'autre sur un autre PC ouvre le fichier Excel, il n'a plus accès à cette macro complémentaire.
Je suis novice en vba j'ai téléchargé le fichier , comment procede t'on pour l'ouvrir?
Merci
jmb
c'est ROYAL AU BAR !!! (on s'arrêtera au café hein.... c'est pas l'heure pour l'apéro )

Big up !!!!

Merci beaucoup

Bonjour,

En utilisant le contrôle proposé par hichamzone.

En posant que l'appel du calendrier se fait sur un clic en [A1] et qu'il copie la date sélectionné en [A3].

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
'


Lupin
Bonjour j'ai utilisé ce code ( code de Lupin ) pour avoir un calendrier dans ma feuille. Il fonctionne très bien. Comment faire pour avoir plusieurs cellules avec différentes date car ce code fonctionne seulement avec une cellule ?
Messages postés
12185
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
21 septembre 2020
2 495
Bonjour Luc,
Il suffit de modifier :
Set Plage = Range("A1")
Essaye, par exemple :
Set Plage = Range("A1,B2,C3,D1:D10")
Merci Pijaku

J'ai fait l'essai de la suggestion mais cela n'as pas l'effet escompté. Oui je remarque bien un changement mais c'est comme copier, coller. Moi j'ai besoin d'inscrire une date a l'aide du calendrier dans une cellule et ensuite d'écrire une autre date dans une autre cellule a l'aide du calendrier.

Luc
Messages postés
23561
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 octobre 2020
6 406
Bonjour,

Luc, tu devrais t'inscrire sur le site pour mieux suivre tes questions.
Tu avais déjà demandé ça ici et je t'y avais répondu

eric
Salut
Désoler pour le trouble mais je ne retrouvais pas ma question. Alors j'ai utilisé une autre méthode pour avoir la réponse.
Bye
Luc
Messages postés
146
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
5 juin 2012
58
Bonjour G-T,

Tu peux reprendre le code proposé par Lupin.A en le modifiant comme suit :

Option Explicit

Private Sub Calendar1_Click()
    ActiveCell.Offset(0, 1).Value = Calendar1.Value
    Calendar1.Visible = False
    
End Sub

End Sub

Private Sub Worksheet_SelectionChange(ByVal target As Range)
    Dim Intersection As Range, Plage As Range

    Set Plage = Range("A1:A100")

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

End Sub

Il ne reste plus qu'à adapter la plage de cellules à cliquer et/ou la colonne devant contenir la date.

Cordialement.
Bonjour Papou93

à quelle ligne doit'on rajouter la plage de cellules à cliquer et/ou la colonne devant contenir la date et sous quelle forme?

Merci
Private Sub DTPicker2_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)

End Sub
Bonjour,

Le calendrier comme tu l'entends n'existe pas , i lfaut le développer, mais tu peux en trouver déjà développés en cherchant sur le net.
J'en ai moi même récupérer un mais je ne sais plus sur quel site
Bonne recherche,
Messages postés
490
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
12 septembre 2007
94
Bonsoir lesdentsduweb,
Comme excel incrémente la date que vous introiduisez dans une cellule: exemple "1.1.2004" en utilisant la poignée de recopie il va incrémenté la date en tenant compte du calendrier interne, donc dès qu'il arrive au "31.1.2004" la suivante devient "1.2.2004" et ainsi de suite,
Je pense que cela devrait vous aidez.
Bonne semaine.

Salutations
Jean-Pierre
Messages postés
12
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
12 janvier 2009
1
Merci Papou93,
je vois ce que tu veux dire.
Je clique sur une case de A1 à A...,
Ensuite avec
ActiveCell.Offset(0, 1).Value
je désigne la case à 0 ligne et 1 colonne de plus de la case active (Ce qui signifie la case juste à la droite de là où j'ai cliqué) et je met la valeur sélectionnée dans le calendrier dedans.

Donc si je mets
ActiveCell.Offset(0, 0).Value
ça me mettra si j'ai bien compris la valeur dans la case où je viens de cliquer.

G-T
Messages postés
490
Date d'inscription
dimanche 14 mars 2004
Statut
Membre
Dernière intervention
12 septembre 2007
94
Bonjour lesdentsduweb,
Hier soir j'ai mal interprété votre message, par contre ce matin je vous propose de voir sous ce lien:
http://perso.wanadoo.fr/frederic.sigonneau/code/Calendriers/BOCalendrierSaisieDate.zip
Bonne journée.

Salutations
Jean-Pierre
si tu as access tu ajoutes au reference calendrier et tu utilises le controle
http://www.excel-downloads.com/telechargements/plannings-et-calendriers/10.htm
beaucoup de choix!
J'ai trouvé sur ce site : http://www.excel-downloads.com/telechargements/plannings-et-calendriers/10-3.htm
Bonjour et tou d'abord merci de cette aide.
Est-il possible d'utiliser ce code pour que quand je clique en [A1], il me copie la date sélectionnée en [B1] mais que je puisse aussi, quand je clique sur [A2], qu'il me copie la date sélectionnée en [B2] ?
Comment puis-je l'adapter ?
Suis-je obligé de faire un contrôle sur toutes les cases ou existe-il une façon de faire une incrémentation ?
En gros je cherche à faire : Si je clique sur [A(x)], le calendrier s'ouvre et la date que je sélectionne s'affiche en [B(x)].
J'espère avoir été clair.
Merci
Messages postés
12
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
12 janvier 2009
1
Bonsoir,
Un petit problème se pose ensuite.
Si je clique sur une case dans la plage pour afficher le calendrier et que je clique ensuite sur une autre case avant d'avoir cliqué sur le calendrier, la case active dans laquelle la valeur est insérée n'est alors plus la bonne.
En effet, la valeur sélectionnée grace au calendrier est insérée dans la dernière case où j'ai cliqué.

Est-ce possible d'empêcher de sélectionner une autre case tant que le calendrier est affiché ? Et comment ?

Merci
G-T
Messages postés
146
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
5 juin 2012
58
Bonsoir G-T,

Pour répondre à ton 1er message, il est inutile d'écrire ActiveCell.Offset(0, 0).Value puisque ActiveCell.Value est équivalent.

En ce qui concerne le second, je ne pense pas que celà soit possible, du moins jusqu'à Excel 2003 puisque je n'ai pas encore testé Excel 2007. Mais il existe une solution :

Il suffit de créer un UserForm contenant un calendrier, puis de régler sa propriété ShowModal à true. Un click sur le calendrier fermera le UserForm. De cette façon, il sera impossible de sélectionner une autre cellule.

Espérant t'avoir aidé et restant à ton écoute.

Cordialement.
Messages postés
12
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
12 janvier 2009
1
Heu...

Le soucis vient de moi, je découvre mon incapacité si je puis dire.
Comment mot-on un calendrier dans un UserForm ?

J'aurai presque envier de m'excuser tellement ça doit paraître évident dès lors qu'on a un peu regardé comment fonctionnait tout ceci auparavant.
Messages postés
146
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
5 juin 2012
58
Heu... c'est simple :

Lorsque tu es dans le userform, tu dois voir la boîte à outils contrôles. Tu cliques droit dans la zone des contrôles, tu choisis contrôles supplémentaires, puis dans la liste déroulante tu choisis 'Contrôle Calendrier 11.0'. Je crois que pour les versons d'excel antérieures à 2003, ça doit être 'Contrôle Calendrier 10.0'.
J'allais oublier : pour trouver ce contrôle calendrier, il faut avoir installé Access dans Microsoft Office. Autrement, je crois qu'on peut se le procurer sur le Net, mais je sais plus où exactement, il faut chercher.

Cordialement.
Messages postés
12
Date d'inscription
jeudi 10 mai 2007
Statut
Membre
Dernière intervention
12 janvier 2009
1
Je n'ai toujours pas réussi.
Tout d'abord un petit récap de ma configuration.
J'utilise Office 2007 et j'ai Access.
J'arrive à trouver "Contrôle Calendrier 12.0" dans les "Autres contrôles" mais je n'arrive pas à le faire dans un UserForm.
Quand je sélectionne "Contrôle Calendrier 12.0" j'ai une croix pour choisir l'emplacement du Calendrier sur mon tableur excel.
Quand je suis dans le code VB du UserForm je n'ai pas acces à la boite à outils contrôles.

Et autre "petit" problème, je n'arrive pas à enregistrer le fichier excel avant la fermeture pour qu'il conserve le Projet VBA.
Autrement dit, tout le code saisi n'est pas sauvé.

Bref, si une nuit porte conseil je vais essayer d'aller en passer deux ...
Messages postés
146
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
5 juin 2012
58
PS : J'ai trouvé ce site, au cas où :

http://www.fontstuff.com

Cordialement.
Bonjour,

Je me permet de venir ici et j'espère ne pas vous outer de par mon ignorance.

En effet j'aimerais savoir exactement comment faire pour mettre un calendrier dans mon tableur Excel 2003. J'ai créer une colonne date et j'aimerais beaucoup pouvoir en sélectionnant une cellule dans cette colonne voir un calendrier aparaitre avec lequel je peux choisir la date et aussi avec lequel dès que je clique il disparait. Même si je dois le mettre dans chaque cellule c'est pas génant.

Merci d'avance

J.F.
Salu Lupin,

La reponse a l'affichage est tres interessante mais apres avoir choisie une date sur la calendrier , comment fait on pour masquer ce meme calendrier.

facteur
Bonjour, pour ma part je recherche la meme fonctionnalité a l exception pres que mon fichier en question est en partage multi utilisateurs, et quand je redige le code ci dessous , puis lance mon outil, en more partage multi utilisateurs, je recois le message suivant: "Unable to set the TOP property of the OLEobject Class".
Si quelqu un a une solution , je suis grandement preneur
par avance merci



Private Sub Calendar1_Click()
' Met la date sélectionnée dans la cellule active
ActiveCell.Value = Calendar1.Value
' Masque le calendrier
Calendar1.Visible = False
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Row >= 8 And Target.Row <= 107 Then
' Si la cellule sélectionnée est dans la plage qu'on veut lier au calendrier,
' on affiche le calendrier
Calendar1.Visible = True
' Place le calendrier à côté de la cellule
Calendar1.Top = ActiveCell.Top
Calendar1.Left = ActiveCell.Left + ActiveCell.Width
Else
' Sinon, on masque le calendrier
Calendar1.Visible = False
End If
End Sub
Messages postés
1
Date d'inscription
mercredi 23 septembre 2009
Statut
Membre
Dernière intervention
23 septembre 2009

Bonjour,

J'ai eu besoin de vos conseils et j'ai trouvé ma solution, j'espère qu'elle vous conviendra.

---//---
Private Sub Calendar1_Click()
ActiveCell.Value = Calendar1.Value
End Sub



Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Intersection As Range, Plage As Range

Set Plage = Range("A:A")

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

End Sub
---//---