Créer une macro "calendrier"

LB59

XLDnaute Junior
Bonjour à tous, et bravo pour le site et le forum !!

Voici ce qui m'amène, j'aimerais, lorsque je clique sur une cellule destinée à contenir une date, qu'une boîte de dialogue, ou une macro, je ne sais pas encore trés bien, s'affiche et parmette de choisir la date que l'on veut.
J'ai pris le mdFCalendrier que j'ai toruvé en lien sur le forum, mais le problème, c'est que si je veux donner mon fichier à quelqu'un, ou même le mettre sur ce site pour téléchargement lorsqu'il sera fini, les personnes n'auront pas mdFCalendrier, et si je commence à expliquer comment l'obtenir, c'est pas gagné avec les néophytes...sans vouloir être 'méchant'...
Je pense donc faire une macro, et la faire apparaitre lorsque l'on clique sur une cellule, donc j'ai 2 questions :

Comment faire cette macro ?

Comment la faire apparaître lors d'un clic ? (J'ai trouvé qqes infos sur le forum, mais pas trop claires, pour moi en tout cas...)

Voila, merci par avance à tous !!

Laurent.
 

Bricofire

XLDnaute Impliqué
Bonsoir LB59, :)

Bon une piste de travail, qui sous Excel 2000 utilise un contrôle calendar à valider si besoin en cliquant droit dans la boîte à outils du vba puis contrôles suppplémentaires, puis contrôle calendrier 9.0.

Dans la feuille j'ai nommé la plage C4:C17 & F4:F17 & I4:I17 'Datacell' pour les besoins de la chose.
Dans le code tu as :


Pour Feuil1 :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(ActiveCell, Range('Datacell')) Is Nothing Then
'***détermine si la cellule sélectionnée appartient à la cible...
USF1.Show
End If

End Sub

Pour l' USF :

Option Explicit

Private Sub Cmd1_Click()
ActiveCell = Cld1.Value
Unload USF1
End Sub

Private Sub Cmd2_Click() 'permet l'effacement
ActiveCell.ClearContents
Unload USF1
End Sub



Vu l'évènement employé pour changer une date ou l'effacer, tu dois aller sur une cell neutre puis y revenir, pour ne rien faire si erreur, fermer avec la croix.


Bonne soirée,

Bfr [file name=DateDansCell.zip size=7532]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/DateDansCell.zip[/file]
 

Pièces jointes

  • DateDansCell.zip
    7.4 KB · Affichages: 321

LB59

XLDnaute Junior
Heu...oui, mais aors là, je suis perdu...;)...
Peux-tu me dire quoi faire de chaque partie STP ?
Je débute vraiment en VBA...
Je sais un peu modifier une macro, mais pour ce que tu me dis de faire, je ne sais pas par où commencer...

Merci, Laurent.
 

Bricofire

XLDnaute Impliqué
re LB59, :)

Bon là je ne peux pas beaucoup disserter, j'ai la vue qui se trouble et je vais aller fair dodo :)

Mais en 1er charge le classeur en pièce jointe et regarde ce qui est dedans, la plage nommée a été mise en bleu pour + de facilité,

Si tu butes sur certains trucs, n'hésites pas à consulter l'aide Excel ET l'aide vba, tu y trouveras une mine de renseignements inépuisable, qui te permettront d'avancer et de poser des questions ciblées pour le reste, ci dessous un exemple :


Attribution d'un nom à une cellule ou à une plage de cellules
Sélectionnez la cellule, la plage de cellules ou des sélections non adjacentes que vous voulez nommer.

Cliquez sur la zone Nom à l'extrémité gauche de la barre de formule.
(y'a le dessin)
Tapez le nom des cellules.

Appuyez sur la touche ENTRÉE.
Remarque Vous ne pouvez nommer une cellule pendant que vous en modifiez le contenu.


à bientôt,

Bonne nuit,

Bfr
 

Bricofire

XLDnaute Impliqué
Re LB 59, :)

Bon ma vue s'est nettement améliorée :)

donc un peu :whistle: d'explications, et ensuite, à toi de bosser ;)


Pour avoir accès au Vba, à partir d’Excel, on peut faire ALT + F11 ou Outils, Macro, Visual Basic Editor. Ou plus simple Affichage, Barres d’outils, cocher Visual Basic elle arrive en flottante et aller la déposer sur un des bords de la fenêtre pour l’ancrer !

En affichage VBA, la base est je crois à droite les fenêtres Explorateur de projet & Propriétés, à droite le code. Il est utile rapidement de se servir de l’explorateur d’objets et de la fenêtre exécution, d’autres sont dispos ensuite.

Du coup de cet endroit tu peux faire du code direct sans passer par l’étape de macro (qui est par contre hyper précieuse pour trouver des pistes ou des commandes à employer).

Dans la fenêtre projet tu as les éléments sur les quels tu peux intervenir, par défaut les feuilles existantes et le classeur, tu peux y rajouter des modules de codes et des USF. Pour les feuilles et le classeur, ça permet d’y mettre du code qui ne les concernent qu’eux en particulier les procédures évènementielles prévues, les modules sont des containers à codes généraux et les USF des boîtes de dialogues interactives à construire.

Donc ne sachant pas trop les détails de ton projet, j’ai pris pour l’exemple un cas où tes cellules dates seraient dans des endroits précis, ce qui permet du coup de « nommer » les zones en question pour une approche du code.

Ensuite justement dans la feuille 1, je me sert de W_SelectionChange qui se déclenche quand tu changes de cellule active, là je regarde si la cellule active fait partie de la plage nommée ( si l’intersection des adresses de la plage nommée et de l’adresse de la cellule n’est pas nulle (donc que la cellule est amenée à comporter une date) j’ouvre le USF (then…), sinon RAS.

Sur le USF, deux boutons, et le calendrier, si OK l’événement click de bouton lance le code qui suit, la cellule active prend pour valeur la date désignée dans le calendrier, puis on referme le USF.
L’autre bouton agit de même sauf qu’il efface la valeur de la cellule (ne la supprime pas ce que ferait un delete avec la conséquence de provoquer un décalage des autres cellules…


Bon WE,

Bfr
 

LB59

XLDnaute Junior
Ok, merci bfr, je regarde à ça et te tiens au courant, en tout cas j'en sais un peu plus maintenant, dans ma réponse (ce soir peut être), je te mettrais une feuille excel pour que tu visualise un peu mieux ce que je fais, et tu verra aussi ou j'en suis avec tes explications !
Encore merci et à bientôt !

Laurent.
 

Bricofire

XLDnaute Impliqué
re LB59, :)

Au risque d'être à côté de la plaque :whistle:

J'ai été un peu rapide peut-être, pour l'USF son objet n'apparaît pas de base dans la fenêtre projet car il peut ne pas exister, pour en créer un, il faut aller dans :
Insertion, Userform

Là tu as l'objet voulu qui apparaît, tu as son cadre pour le contruire avec le boîte à outils et dans la fenêtre projet en haut tu peux accéder au code ou à la feuille par click (tu peux aussi par double click, par touches etc...)

L'Usf a son propre code et chaque contrôle aussi dans la section code de l'USF

bon courage et bon dimanche

Bfr
 

Discussions similaires