Afficher un calendrier dans une plage de cellule fusionnees

ATHE RIOVELI

XLDnaute Occasionnel
Bonjour le forum,
J'ai un souci avec une de mes feuilles excels
Je souhaite avec des macros insérer un calendrier dans une plage de cellule que j'ai déja défini,
puis l'heure par exemple: 15:35:42 (le format de l'heure doit etre quelque chose de beau à voir)
Je ne sais vraiment pas comment créer ce calendrier et surtout comment le placer à cette place que je veux.
Voici un modèle de feuille réaliser.
Merci pour votre compréhension.
 

Pièces jointes

  • TEST CALENDRIER+HEURE.xlsx
    9.3 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Afficher un calendrier dans une plage de cellule fusionnees

On vous en a déjà donné plein, des UserForm calendriers, à faire glisser de leurs projets VBA vers le votre, et généralement accompagnés des modèles de codes nécessaires pour les afficher.

Le mien, soit dit en passant, est précisément équipé d'une méthode de positionnement.
 
Dernière édition:

ATHE RIOVELI

XLDnaute Occasionnel
Re : Afficher un calendrier dans une plage de cellule fusionnees

BONSOIR Dranreb,
Oui le forum en a donné plein, j'ai exporter les différentes macros et ca marche parfaitement.
Je ne suis qu'un débutant en macro.
Alors s'il te plait ne te fâche.
Je souhaite joindre ici mon fichier afin que me mette le calendrier dans la feuil1 à la position indiquée.
Je compte sur toi.
Encore une fois merci pour la compréhension
A+
 

Pièces jointes

  • test OK (Près à 25%).xlsm
    200.1 KB · Affichages: 66

Dranreb

XLDnaute Barbatruc
Re : Afficher un calendrier dans une plage de cellule fusionnees

À quel moment vous voulez qu'il s'affiche ?

Non, et puis laissez tomber, votre classeur est déjà équipé d'un calendrier de quelqu'un d'autre.
Demandez peut être par MP à son auteur d'y ajouter la méthode Posit du mien…
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Afficher un calendrier dans une plage de cellule fusionnees

Ou alors ajoutez la vous même :
VB:
Public Sub Posit(ByVal O As Object, Optional ByVal X As Double, Optional ByVal Y As Double)
Rem. ——— Vous pouvez au préalable positionner l'UserForm par rapport à quelque chose.
'     O: Ce par rapport à quoi vous voulez le positionner. X et Y indiqueront comment :
'     X: -1: Collé au coté gauche, 0: Centré horizontalement, 1: Collé au coté droit.
'     Y: -1: Collé au bord supérieur, 0: Centré verticalement, 1: Collé juste en dessous.
'     D'autres valeurs entraineront un recouvrement partiel ou un certain éloignement.
'     Mais rien ne vous empêche de rectifier encore ensuite la propriété Left ou Top
'     de l'UFmCalend pour ajouter un interstice en points au bord de l'objet. Mais toujours
'     avant le Show, donc avant utilisation de la méthode Saisie.
Dim G As Double, D As Double, H As Double, B As Double, U As Object, K As Double, Z As Double
If TypeOf O Is MSForms.Control Then
   G = O.Left: H = O.Top: Set U = O.Parent
   Do: K = (U.Width - U.InsideWidth) / 2
      G = G + U.Left + K: H = H + U.Top + U.Height - U.InsideHeight - K
      If Not TypeOf U Is MSForms.Frame Then Exit Do
      Set U = U.Parent: Loop
   D = G + O.Width: B = H + O.Height
Else
   Z = ActiveWindow.Zoom / 100
   K = GetDeviceCaps(GetDC(0), 88) / 72
   G = ActiveWindow.PointsToScreenPixelsX(O.Left * K * Z) / K
   D = ActiveWindow.PointsToScreenPixelsX((O.Left + O.Width) * K * Z) / K
   K = GetDeviceCaps(GetDC(0), 90) / 72
   H = ActiveWindow.PointsToScreenPixelsY(O.Top * K * Z) / K
   B = ActiveWindow.PointsToScreenPixelsY((O.Top + O.Height) * K * Z) / K
   End If
Me.Left = (X * (D - G + Me.Width + 6) + G + D - Me.Width - 6) / 2 + 3
Me.Top = (Y * (B - H + Me.Height + 6) + H + B - Me.Height - 6) / 2 + 3
End Sub
J'allais oublier, Il faut aussi ça au début :
VB:
Option Explicit
Private Declare Function GetDC& Lib "user32.dll" (ByVal hWnd&)
Private Declare Function GetDeviceCaps& Lib "gdi32" (ByVal hDC&, ByVal nIndex&)
 

ATHE RIOVELI

XLDnaute Occasionnel
Re : Afficher un calendrier dans une plage de cellule fusionnees

Merci bien Dranreb,
Je crois qu'on sait pas bien compris.
Je viens d'essayer les macros, mais le calendrier s'affiche lors d'un double clique dans la plage de cellule.
Mois je veux qu'il s'affiche automatiquement dans la feuil1 dans la plage de cellule. Pas de click
Merci pour ton aide.
 

Dranreb

XLDnaute Barbatruc
Re : Afficher un calendrier dans une plage de cellule fusionnees

Un UserForm s'affiche au moyen de sa méthode Show.
Ou par un appel d'une méthode installée dans son code qui effectue ce Show.
Ça peut se faire où ça vous convient. Par exemple pour qu'il s'affiche à l'activation d'une feuille: dans une Sub Worksheet_Activate de son module. À l'ouverture du classeur: dans une Sub Workbook_Open du module ThisWorkbook.
 
Dernière édition:

ATHE RIOVELI

XLDnaute Occasionnel
Re : Afficher un calendrier dans une plage de cellule fusionnees

BONJOUR Dranreb
Regarde le classeur, j'ai mis les macros de la feuil1 mais le calendrier s'affiche seulement à un double clik dans la cellules fusionnée.
Moi, je veux qu'il apparaissent à l'ouverture du classeur dans la feuil1 dans les cellules indiquée.
Et qui'il reste à cette position tant que le classeur est ouvert.
 

Pièces jointes

  • test OK (Près à 25%).xlsm
    200.1 KB · Affichages: 54

Dranreb

XLDnaute Barbatruc
Re : Afficher un calendrier dans une plage de cellule fusionnees

Il n'y a pas de fmSTD_Calendrier.Show dans la Sub Workbook_Open de ThisWorkbook
…qui'il reste à cette position tant que le classeur est ouvert.
À quoi il sert ce classeur alors, s'il reste tout le temps bloqué sur une saisie de date par affichage d'un UserForm avec ShowModal à true ???
 
Dernière édition:

ATHE RIOVELI

XLDnaute Occasionnel
Re : Afficher un calendrier dans une plage de cellule fusionnees

Bonsoir Dranreb
Laisse tomber cette histoire de calendrier sur la feuille1, je vais ecrire toute les formules au niveau des celules necessaire puis après je ferai part au forum de mes nouvelles préocupation.
En effet les utilisateurs qui ont 3 classes sont obliger de faire un copier coller du fichier trois, ils souhaitent y remedier.
Alors je reflechis pour voir comment faire.
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T