Posez votre question Signaler

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

lesdentsduweb - Dernière réponse le 16 déc. 2011 à 15:34
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.
Lire la suite 

Excel : existe-t-il un calendrier »

36 réponses
Réponse
+48
moins plus
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
imanizar - 31 mai 2011 à 11:42
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
Ajouter un commentaire
Réponse
+9
moins plus
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.
Ajouter un commentaire
Réponse
+5
moins plus
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/smartsection/item.php?itemid=28
Tonio - 14 sept. 2010 à 20:14
Juste trop bien et compatible avec Excel 2010
Mad - 16 déc. 2011 à 15:34
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.
Ajouter un commentaire
Réponse
+3
moins plus
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
Luc - 6 août 2011 à 10:06
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
eriiic - 6 août 2011 à 11:53
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
Luc - 7 août 2011 à 09:19
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
Ajouter un commentaire
Réponse
+3
moins plus
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.
cairnoc - 28 juil. 2010 à 12:57
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
Gwy - 23 sept. 2011 à 11:41
Private Sub DTPicker2_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)

End Sub
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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,
Ajouter un commentaire
Réponse
+1
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
si tu as access tu ajoutes au reference calendrier et tu utilises le controle
Ajouter un commentaire
Réponse
+0
moins plus
Ajouter un commentaire
Réponse
+0
moins plus
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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.
G-T - 30 oct. 2007 à 21:37
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 ...
Ajouter un commentaire
Réponse
+0
moins plus
PS : J'ai trouvé ce site, au cas où :

http://www.fontstuff.com/mailbag/qvba01.htm

Cordialement.
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
alepmi - 5 nov. 2008 à 19:50
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
sebioj - 23 sept. 2009 à 14:37
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
---//---
Ajouter un commentaire
Ce document intitulé « Excel : existe-t-il un calendrier ? » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook
Excel : existe-t-il un calendrier ? - page 2