Recherche
Posez votre question Signaler

Insérer calendrier cellule excel [Résolu]

dat - Dernière réponse le 8 juil. 2011 à 15:39
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...
Lire la suite 
Réponse
+40
moins plus
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
dat- 28 oct. 2009 à 14:39
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
Répondre
Ajouter un commentaire
Réponse
+5
moins plus
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
Ajouter un commentaire
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+2
moins plus
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
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 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.
Répondre
Ajouter un commentaire
Réponse
+2
moins plus
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
Ajouter un commentaire
Réponse
+1
moins plus
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
UsulArrakis 7442Messages postés vendredi 28 mars 2003Date d'inscription ContributeurStatut 13 février 2015Dernière intervention - 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
Répondre
eriiic 17795Messages postés mardi 11 septembre 2007Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 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
Répondre
UsulArrakis 7442Messages postés vendredi 28 mars 2003Date d'inscription ContributeurStatut 13 février 2015Dernière intervention - 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
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
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
pijaku 10805Messages postés jeudi 15 mai 2008Date d'inscription ContributeurStatut 1 avril 2015Dernière intervention - 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...
Répondre
Ajouter un commentaire
Réponse
+1
moins plus
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é.
Ajouter un commentaire
Réponse
+0
moins plus
bonsoir,

je passais par là et si je pouvais me permettre, je serais fortement intéressé par une explication du professeur eriiic...
Ajouter un commentaire
Réponse
+0
moins plus
et bien un grand merci Mr le Professeur, j'irai me coucher moins bête ce soir..
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
Merci bcp à tous, ça fonctionne...faut-il mettre "résolu" quelque part sur ce forum ?

A bientôt.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ,

http://www.commentcamarche.net/...

Merci encore et encore
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

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

eric
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé «  insérer calendrier cellule excel  » 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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.