Insérer calendrier cellule excel

Résolu/Fermé
dat - 27 oct. 2009 à 18:25
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 3 juin 2016 à 22:57
Bonjour,

Je suis en train de réaliser un petit fichier sous excel 2007.
J'ai une colonne destinée à accueillir la date de mise en service d'un véhicule.
Pour simplifier et rendre ergonomique l'utilisation de ce fichier aux futurs utilisateurs, je voudrais qu'au moment où ils viennent dans la cellule pour saisir la date, apparaisse un calendrier qui leur permet de cliquer dessus, pour mettre la date dans celle-ci, plus sympa quand même...
Problème je suis nul en informatique !
J'ai bien essayé à travers les divers forums de bidouiller quelque chose sur VBA mais je n'arrive à rien ; quelqu'un pourrait-il gentiment m'expliquer comment on fait dans le détail svp avec les codes et les boutons sur lesquels cliquer.... ????

Je remercie ce super héros d'avance...

20 réponses

eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
28 oct. 2009 à 12:37
remplace la 1ère ligne par :
If Not (Target.Column = 3 Or Target.Column = 5) Or Target.Row < 2 Or Target.Cells.Count > 1 Then
3 et 5 étant les n° des colonnes concernées.

Pour ton autre post tu te compliques la vie de vouloir faire un formulaire (si ce n'est que pour ça...). Sa gestion demande du temps que je n'aurais pas.
Quand tu poses une question n'hésites pas à déposer un fichier exemple sur cijoint.fr et coller le lien dans le post. Tout le monde n'a pas le courage de recréer ton fichier et de plus ça ne collera pas avec le tien...

Dans une feuille Liste crée toi tes listes et nommes les plages des modèles.
Ex: en B1: Renault, en B2:B4 les modèles, sélectionner B1:B4 puis 'insertion / nom / créer...', cocher 'ligne du haut', valider
Ta plage B2:B4 s'appelle maintenant Renault
En A une liste des marques avec le titre (nommer aussi)

Dans ta feuille de travail pour ta 1ère liste en A2:A8 tu fais une validation par liste avec =Marques
Pour la liste en cascade une validation par liste en B2:B8 avec =INDIRECT($A2)

exemple

eric

eric
42
Merci Eric, ça marche je te suis très reconnaissant ; je vais enfin pourvoir présenter un fichier qui ressemble un peu à qqchose..
Si j'ai d'autres questions sur ces logiciels comment puis-je te contacter en direct sur ce site ?
Es-tu calé sur access également ?
Merci encore et à bientôt
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
28 oct. 2009 à 09:15
Bonjour tout le monde,

C'est sur la feuille qu'il faut ajouter le contrôle Calendar, et donc il te faut la barre d'outils dans excel 'normal'.
Sinon tu peux déposer ton fichier sur cijoint.fr (au format .xls) et coller ici le lien fourni.
Par contre je ne pourrais te guider que sur excel 2003, sur 2007 il faut fouiller...
eric
7
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
28 oct. 2009 à 10:57
il faut modifier un peu la macro (attention il y a 1 ligne en moins, recopier l'ensemble) et en ajouter une autre.

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

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' si la sélection sur la feuille change (target est la référence de la sélection)
    If Target.Column <> 3 Or Target.Row < 2 Or Target.Cells.Count > 1 Then
        'si la colonne <>3 (C) ou la ligne <2 ou la sélection fait plus d'1 cellule
        Calendar1.Visible = False
        'alors on cache le calendrier
        Exit Sub
    Else
        'sinon
        Calendar1.Top = Target.Offset(1, 0).Top + 2
        ' aligner le calendrier avec le haut de la cellule en dessous
        Calendar1.Left = Target.Left + 10
        ' l'aligner à gauche de la cellule
        'Calendar1.LinkedCell = Target.Address
        ' mettre la cellule liée au contrôle sur la cellule sélectionnée
        If IsDate(Target.Value) Then
        'si la cellule sélectionnée contient une date
            Calendar1.Value = Target.Value
            ' la récupérer
        Else
            ' sinon mettre la date du jour
            Calendar1.Value = Date
        End If
        Calendar1.Visible = True
        'afficher le calendrier
    End If
End Sub

eric

edit : j'ai remodifier un peu le code pour décaler le calendrier et pouvoir sélectionner les cellules en dessous qui étaient masquées
5
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
27 oct. 2009 à 19:50
Bonsoir,

Un exemple de ce que tu pourrais faire.
Un clic colonne C (sauf ligne 1) fait apparaitre le calendrier.
Seul petit pb, le contrôle calendar fourni une chaine et non une valeur date. Les calculs dessus sont faisables mais une comparaison de date serait fausse si tu ne multiplies pas par 1 la valeur.
Ne sachant ton niveau exact demande où tu bloques...

eric
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci Eriiic d'avoir répondu, c'est toujours un plaisir de voir qu'on peut trouver de l'aide sur Internet alors que le responsable informatique de son entreprise ne prend même pas le temps de vous expliquer...bref...

Cependant quand je dis que je suis nul en informatique, c'est malheureusement vrai....et à part la fonction somme, si...je ne sais rien faire....

Donc pour en revenir à notre question, peux tu détailler s'il te plait (si tu as 5 min à perdre), les manips étape par étape, les boutons...sous excel 2007 ?
J'ai bien essayé de recopié ta formule dans VBA mais je n'y connaît vraiment rien...
Au moment où je veux executer, le logiciel me demande de créer alors que je croyais avoir fini....je ne connais pas du tout la manière de procéder. Faut-il créer un userform ? Comment faire ?

La date de mise en service du véhicule doit être dans la colonne G, sauf en G1 qui constitue l'intitulé de la colonne....

Je ne croyais pas que ce serait si dur d'insérer un simple calendrier dans une cellule...

Merci d'avance de ta précieuse aide
2
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
28 oct. 2009 à 08:41
Salut à tous,
Salut Eriiic,
(au passage superbe tableau, très belle solution)
Bon pour Dat, il semble relativement aisé à adapter ce code. Suffit de suivre les étapes :
1ère partie :
sur la feuille :
- menu 'affichage / barre d'outils' cocher 'barre d'outils contrôles"
- dans cette barre cliquer sur l'outil 'autres contrôles…' (tout à droite)
- sélectionner 'contrôle calendrier 11.0'
- le dessiner sur la feuille

ça je suppose que ça ne te pose pas de souci?

2ème partie le code : clic droit sur l'onglet de ta feuille et :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' si la sélection sur la feuille change (target est la référence de la sélection)
If Target.Column <> 3 Or Target.Row < 2 Or Target.Cells.Count > 1 Then
'si n° colonne<>3 (C) dans ton cas, colonne G remplace 3 ci dessus par 7 ou n° ligne<2 ou la sélection fait plus d'1 cellule
Calendar1.Visible = False
'alors on cache le calendrier
Exit Sub
Else
'sinon
Calendar1.Top = Target.Offset(1, 0).Top
' aligner le calendrier avec le haut de la cellule en dessous
Calendar1.Left = Target.Left
' l'aligner à gauche de la cellule
Calendar1.LinkedCell = Target.Address
' mettre la cellule liée au contrôle sur la cellule sélectionnée
If IsDate(Target.Value) Then
'si la cellule sélectionnée contient une date
Calendar1.Value = Target.Value
' la récupérer
Else
' sinon mettre la date du jour
Calendar1.Value = Date
End If
Calendar1.Visible = True
'afficher le calendrier
End If
End Sub

Essaye sur un classeur Excel vierge et reviens nous dire ou tu bloques.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
28 oct. 2009 à 09:52
Pas de soucis pijaku, tu fais bien.

dat : tu dessines le calendrier où tu veux mais tu lui donnes les bonnes dimensions.
Par contre après l'avoir dessiné il faut quitter le mode 'construction' en cliquant sur l'icone avec regle+crayon+équerre.
Ensuite clique n'importe où : il disparait, clique dans la bonne colonne : il apparait.
eric
2
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
27 oct. 2009 à 20:51
Re,

le même commenté : calendar.xls
Selon le besoin on pourrait compléter les tests pour qu'il ne s'affiche que si la cellule est vide ou contient une date, pour éviter une perte de donnée.

eric
1
UsulArrakis Messages postés 7405 Date d'inscription vendredi 28 mars 2003 Statut Contributeur Dernière intervention 27 janvier 2022 3 189
7 juil. 2011 à 11:24
Bonjour eriiic
je fais remonter ce message car j'aimerai savoir
1- s'il est possible de mettre le calendrier sur 3 colonnes au lieu d'une seule (dans mon cas E, F et M)
2- s'il est possible dans la macro de déclencher la multiplication par 1 pour pouvoir utiliser la date (calcul)

merci
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
8 juil. 2011 à 15:10
Bonjour Usul,

Adaptation vite faite pour cause de valise à faire.... ;-)
http://www.cijoint.fr/cjlink.php?file=cj201107/cijO2M6mst.xls

Reste un petit pb (qui existait peut-être sur l'autre version) : sur suppression d'une date il affiche quand même 12:00:00 AM
Tu pourras compléter si besoin je pense
Attention: déclaration d'une variable dans un module.
Mauvais reflexe, je pense que tu peux la ramener dans la feuille, mais hors sub

eric
0
UsulArrakis Messages postés 7405 Date d'inscription vendredi 28 mars 2003 Statut Contributeur Dernière intervention 27 janvier 2022 3 189
8 juil. 2011 à 15:39
merci, fallait pas te presser, y a rien qui presse mais c'est sympa d'avoir pris sur ton temps précieux alors bonnes vacances
pour moi c'est en août ;-)

on en reparle à la rentrée
0
Bonjour Eriiic,

J'ai bien réussi à dessiner un calendrier sur la feuille excel, enfin...je le dessine n'importe où ça n'a pas d'importance ?
Ensuite j'ai cliqué droit sur l'onglet "feuill1" toujours en mode excel "normal" et appuyer sur "visualiser le code" ; j'ai cliqué dessus et j'ai rentré les données de pijaku directement. Est ce que jusque là c'est bon ?
Mais une fois le code rentré (si tant est que je ne me suis pas trompé) que faire pour éxécuter et voir si cela fonctionne parce que qd j'appuie sur "executer" et il me demande de créer la macro, ce n'est pas ce que je viens de faire ?
C'est galère quand on y connait rien !

Merci à toi
1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 752
28 oct. 2009 à 09:42
Non une fois que tu as copié collé le code, fermé la fenêtre visual Basic (là tu vois ta feuille Excel) il fonctionne tout seul, en cliquant sur les cellules de ta feuille...

Edit: pour Eriiic, je me permet d'intervenir ici sans vouloir empiéter sur votre discussion...
0
Ca y est ça marche !!!! Merci de votre patience et de votre aide...sans vous j'aurais abandonné !
Une dernière question avant de cliquer sur résolu ; comment faire pour que lorsque je clique dans une colonne (le calendrier apparait...), si je la quitte sans cliquer sur une date ça ne mette pas la date du jour ?
Merci d'avance pour cette question et merci pour m'avoir aidé.
1
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
27 oct. 2009 à 20:21
bonsoir,

je passais par là et si je pouvais me permettre, je serais fortement intéressé par une explication du professeur eriiic...
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 827
27 oct. 2009 à 21:06
et bien un grand merci Mr le Professeur, j'irai me coucher moins bête ce soir..
0
Bonjour et merci de votre réponse

Je bloque malheureusement dans la 1ere partie.... On ne rigole pas...

Je m'explique :

Menu affichage...Faut-il le faire dans le VBA ? ou simplement dans la feuille telle qu'elle est ?
Parce que moi j'arrive à dessiner ce calendrier 12.0 en allant dans le VBA et en cliquant sur nouveau userform et en insérant le calendrier ; c'est ça ?
0
Merci bcp à tous, ça fonctionne...faut-il mettre "résolu" quelque part sur ce forum ?

A bientôt.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
28 oct. 2009 à 11:19
Oui c'est mieux. Mais si tu n'es pas inscris tu ne peux peut-être pas.
Je l'ai fait pour toi.
Bonne continuation...
eric
0
Eric, encore une question,

J'ai une autre feuille pour laquelle deux colonnes sont concernées par l'ajout d'un calendrier ; j'ai bien réussi à faire un copier coller ça marche pour une des deux ; mais pour la seconde quand je REcopie encore une seconde fois le code, ca ne marche pas.
Comment faire ?

Aurais-tu aussi la réponse au nouveau topic que je viens d'ouvrir ? ci-joint le lien ,

https://forums.commentcamarche.net/forum/affich-14933312-aide-formule-excel-et-grille-de-saisie

Merci encore et encore
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
28 oct. 2009 à 14:50
C'est mieux de poster sur le forum, son but c'est que tout le monde profite des réponses.
Et si je ne suis pas là d'autres peuvent répondre, en privé...
Non, je ne connais que le minimum sur access, désolé.
eric
0
gunbafo Messages postés 55 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 18 février 2011 3
9 déc. 2009 à 11:53
bonjour,

Cette explication est appropriée à une manip que je veux exécuter mais je rencontre un problème.

Je suis sur Excel 2003 et je ne trouve pas dans l'outil "autres contrôle" la choix 'contrôle calendrier 11.0'
Est-ce un problème de la version Excel?

Merci de votre aide pour trouver le problème.
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
9 déc. 2009 à 12:58
Bonjour,

A-priori il est livré avec Access, donc installer access.
Sinon rechercher sur le net MSCAL.ocx ou un équivalent

eric
0
Bonjour,

je viens de voir ce sujet qui a quelque mois, mais ne trouvant pas la solution ailleur je me permet de vous posez la question.

J'aimerai faire exactement ce que fait Eric, mais sur word

Enfin j'aimerai faire apparaitre un calendrier en cliquant sur une case de mon tableau que je fais sur Word.
Et de par se calendrier, pouvoir définir la date qui m'intéresse.

est ce que c'est possible ?


Merci de votre aide.
0
Tqd Messages postés 1 Date d'inscription vendredi 8 avril 2016 Statut Membre Dernière intervention 8 avril 2016
8 avril 2016 à 17:43
Super, ça fonctionne !
Maintenant, j'aimerais l'appliquer sur deux colonnes côte à côte.
Ex : Date de suivi et date requis
Il semble que je ne puisse utiliser le même code car j'obtiens un message d'erreur...
Que dois-je faire ?
0
Bonjour,

Je souhaiterais faire exactement la meme chose mais est il possible que vous uploadiez de nouveau vos fichiers tests que je comprenne comment cela fonctionne
Merci bcp et bonne apres midi
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 248
3 juin 2016 à 22:57
Bonjour,

Le contrôle Calendar n'existe plus sur le nouvelles versions.
MS change à presque chaque version, sur 2010 par exemple c'est le contrôle DTPicker.
Je te déconseille donc de les utiliser et de prendre un calendrier construit dans un formulaire. Tu peux trouver de multiples exemples sur le net.
Ici celui de pijaku par exemple : https://www.commentcamarche.net/faq/41159-vba-excel-toutes-versions-controle-calendrier-transposable
eric
0