Rechercher : dans
Par :

Insérer calendrier cellule excel

Dernière réponse le 28 oct 2009 à 14:50:07 dat, le 27 oct 2009 à 18:25:00 
 Signaler ce message aux modérateurs

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...

Configuration: Windows Vista

Meilleures réponses pour « insérer calendrier cellule excel » dans :
[Excel] Colorer des cellules sur conditions VoirIl existe dans Excel des fonctions très pratiques mais peu connues et peu utilisées. Exemple : vous souhaitez qu'une cellule se colore automatiquement en rouge (ou autre mise en forme de police, de bordure, de trame) selon une condition : un...
Insérer un gif animé dans Excel VoirPour insérer une image gif animée dans un classeur Excel, le réflexe est de faire le menu insertion / image, mais cela ne fonctionne pas. C'est normal car l'animation est faite par plusieurs images et l'importation se limite à la première. Pour que...
Insérer une image de fond sous la grille Excel VoirVous souhaitez insérer un logo sous JPEG ou autre, sous votre grille Excel : FORMAT / FEUILLE / ARRIERE PLAN s'ouvre un panneau vous présentant vos images pour sélection.... choisissez, validez. Pour le supprimer : même procédure FORMAT /...

1

eriiic, le 27 oct 2009 à 19:50:49

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

Répondre à eriiic

2

dobo69, le 27 oct 2009 à 20:21:51

Bonsoir,

je passais par là et si je pouvais me permettre, je serais fortement intéressé par une explication du professeur eriiic...
Si vous n'avez besoin de rien, demandez-moi.

Répondre à dobo69

3

eriiic, le 27 oct 2009 à 20:51:31
  • +1

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

Répondre à eriiic

4

dobo69, le 27 oct 2009 à 21:06:20

Et bien un grand merci Mr le Professeur, j'irai me coucher moins bête ce soir..
Si vous n'avez besoin de rien, demandez-moi.

Répondre à dobo69

5

dat, le 28 oct 2009 à 08:34:39

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

Répondre à dat

6

pijaku, le 28 oct 2009 à 08:41:00
  • +1

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. Cordialement,
-- Ce qui vaut la peine d'être fait vaut la peine d'être bien fait --

Répondre à pijaku

7

dat, le 28 oct 2009 à 08:49:33

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 ?

Répondre à dat

8

eriiic, le 28 oct 2009 à 09:15:19

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

Répondre à eriiic

9

dat, le 28 oct 2009 à 09:38:31

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

Répondre à dat

10

pijaku, le 28 oct 2009 à 09:42:34
  • +1

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... Cordialement,
-- Ce qui vaut la peine d'être fait vaut la peine d'être bien fait --

Répondre à pijaku

11

eriiic, le 28 oct 2009 à 09:52:04
  • +1

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

Répondre à eriiic

12

dat, le 28 oct 2009 à 10:05:18

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é.

Répondre à dat

13

eriiic, le 28 oct 2009 à 10:57:28
  • +1

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

Répondre à eriiic

14

dat, le 28 oct 2009 à 11:15:58

Merci bcp à tous, ça fonctionne...faut-il mettre "résolu" quelque part sur ce forum ?

A bientôt.

Répondre à dat

15

eriiic, le 28 oct 2009 à 11:19:35

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

Répondre à eriiic

16

dat, le 28 oct 2009 à 12:06:21

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

Répondre à dat

17

eriiic, le 28 oct 2009 à 12:37:27
  • +1

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

Répondre à eriiic

18

dat, le 28 oct 2009 à 14:39:33

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 à dat

19

 eriiic, le 28 oct 2009 à 14:50:07

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

Répondre à eriiic