Simplifier l'userform Calendrier

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonsoir Le Forum,

Je joins un fichier dans lequel j'ai placé un calendrier qui m'est bien pratique.
Il apparaît ici lorsque la cellule C8 ou la cellule C10 est sélectionnée.
Cet userform me convient mais j'aimerai encore une simplification, si c'est possible.

L'objectif est de pouvoir valider l'userform dès le choix d'une date de ce calendrier.
Le bouton VALIDER pourrait ainsi être supprimé (et pourquoi pas aussi le bouton Annuler).

C'est un userform que j'ai trouvé dans une discussion sur Le Forum et que j'ai essayé de personnaliser. Merci à son concepteur.

Cette dernière phase de la présentation me paraît impossible au vu de mes connaissances en codification si bien qu'une aide me rendrai bien service.
Merci à l'avance.
Bonne soirée,
Webperegrino
 

Pièces jointes

  • Calendrier COMBO_Mois déroulant Horizontal(1).xls
    97.5 KB · Affichages: 282

job75

XLDnaute Barbatruc
Re : Simplifier l'userform Calendrier

Bonsoir Webperegrino,

Le code utilisé est compliqué car il crée le calendrier par une procédure...

Pourquoi ne pas mettre définitivement un contrôle calendrier dans l'UserForm ???

Ensuite à la place des macros des boutons on mettra cette macro :

Private Sub Calendar1_Click()

dans laquelle Calendar1.Value donnera la date...

A+
 

job75

XLDnaute Barbatruc
Re : Simplifier l'userform Calendrier

Re,

Voici le fichier, c'est vraiment hyper simple avec cette macro dans le code de l'USF :

Code:
Private Sub Calendar1_Click()
ActiveCell = CDate(Calendar1.Value)
Unload Me 'facultatif
End Sub
A+
 

Pièces jointes

  • Calendrier(1).xls
    87 KB · Affichages: 201
  • Calendrier(1).xls
    87 KB · Affichages: 197
  • Calendrier(1).xls
    87 KB · Affichages: 191
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Simplifier l'userform Calendrier

Bonsoir Le Forum,
Bonsoir job75 et merci pour votre proposition.

Toutefois celle-ci ne fonctionne pas ici car voici ce qui paraît comme message à l'ouverture de votre fichier attaché en retour :
Microsoft Forms :
"Impossible de charger le objet car il n'est pas disponible sur cette machine".


J'ai aussi essayé de remplacer 'Calendar1' par 'Calendrier1' dans les deux 1ères lignes de votre code ;
ça ne fonctionne pas mieux non plus :
...
Private Sub Calendrier1_Click()
ActiveCell = CDate(Calendrier1.Value)
...
Merci toutefois pour cet essai, c'est sympa.
Bonne soirée,
Webperegrino
 

Bebere

XLDnaute Barbatruc
Re : Simplifier l'userform Calendrier

bonjour Webperegrino,Job
tu as déjà eu une solution
à bientôt
 

Pièces jointes

  • CalendrierWebperegrino.xls
    87.5 KB · Affichages: 143
  • CalendrierWebperegrino.xls
    87.5 KB · Affichages: 144
  • CalendrierWebperegrino.xls
    87.5 KB · Affichages: 140

job75

XLDnaute Barbatruc
Re : Simplifier l'userform Calendrier

Bonjour Webperegrino, salut Bebere,

Toutefois celle-ci ne fonctionne pas ici car voici ce qui paraît comme message à l'ouverture de votre fichier attaché en retour :
Microsoft Forms :
"Impossible de charger le objet car il n'est pas disponible sur cette machine".

Essayez ceci :

- dans VBA, menu Outils => Références

- rechercher la référence Microsoft Calendar Control xx.x et la cocher.

Edit : ça ne marchera pas.

Je viens de passer sur mon portable avec Excel 2010, j'ai le même message, et la référence n'existe pas.

Par contre le frmDPicker du fichier de Bebere fonctionne sur Excel 2003 et sur Excel 2010.

A+
 
Dernière édition:

degap05

XLDnaute Impliqué
Re : Simplifier l'userform Calendrier

Bonjour, Webperegrino, Bebere et le forum,

Je connais le calendrier utilisé par Webperegrino, je m'en sert quotidiennement.
Celui que tu proposes, Bebere est très bien.
Pour mon usage, je souhaiterais que l'Userform s'ouvre à droite de la cellule double cliquée, dans une plage (en effet j'ai choisi ce mode de fonctionnement):

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Count = 1 Then
If Not Intersect(Target, Range("a1:a100")) Is Nothing Then
frmDPicker.Show
Target.Offset(, 0).Select
End If
End If

End Sub

Penses-tu que cela soit possible ?

A+
Merci.
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Simplifier l'userform Calendrier

Bonsoir Le Forum,
Bonsoir Job75,

Bonsoir Bebere : je viens de trouver dans mes 'archives' clé USB ta proposition ci-avant #5 et te remercie aussi de ce rappel. Et en plus je l'avais placé dans une autre application, je ne suis pas pardonnable !

Bonsoir aussi à Jean-Marcel et Degap05 qui venez mettre de l'eau à mon 'moulin' qui ne va que bien fonctionner avec tout cela.
J'expérimenterai l'essai de Degap : c'est intéressant ce placement de l'UserForm adjacent à la cellule devant recevoir la date ; si ça fonctionne ce sera parfait !
Bonne soirée à vous tous et merci pour cette participation.
Webperegrino
 

degap05

XLDnaute Impliqué
Re : Simplifier l'userform Calendrier

Bonjour, Bebere, bonjour à tous,

A moins d'un mauvais placement de ma part, cela ne semble pas fonctionner...
Pour l'instant je le centre au milieu de la feuille, avec StartUpPosition, renseigné avec 1-CenterOwner.

A+
 

Bebere

XLDnaute Barbatruc
Re : Simplifier l'userform Calendrier

bonjour degap,le forum

à mettre dans èvènement userform activate ou initialize
à essayer Me.Left = Application.Width - Me.Width
le meilleur résultat avec Me.Left = ActiveCell.Offset(1, 1).Top
me fait référence à userform de la feuille de code
 

degap05

XLDnaute Impliqué
Re : Simplifier l'userform Calendrier

Bonsoir Bebere, le forum,

Cela ne fonctionne pas mieux.
Pourrait-on adapter le code d'un bouton suiveur à un userform ?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Worksheets(1)
Dim PositionLigne%, PositionColonne%
PositionLigne = IIf((Target.Row) < 5, 3, Target.Row)
PositionColonne = IIf(Target.Column < 2, 1.5, Target.Column + 1)

CommandButton1.Top = .Rows(PositionLigne).Top - 5
CommandButton1.Left = .Columns(PositionColonne).Left + 25

End With
End Sub

A+
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Simplifier l'userform Calendrier

Bonsoir Le Forum, Bebere, Degap05,
... si je puis me permettre d'intervenir (car de mon côté je suis satisfait des réponses précédentes) c'est même galère quand on utilise deux écrans !
- si la feuille est en écran de gauche, pas de souci
- si la feuille est placée en écran de droite, l'UserForm Calendrier se placera toujours sur l'écran de gauche : en exécutions rapides on se croirait à Wimbledon ... donc je mets tout à gauche et mes cervicales se portent alors à merveille...

Mais votre discussion "Userform adjacent à toute cellule réceptrice de la date à choisir' continue à m'intéresser, les essais correspondants non concluants jusqu'ici.
Bonne soirée,
Webperegrino
 

degap05

XLDnaute Impliqué
Re : Simplifier l'userform Calendrier

Bonjour, Webperegrino, bonjour à tous,

Je pense avoir trouvé et adapté le fichier proposé par:

Chip Pearson "formposition"

pour réaliser un calendrier "suiveur".

A tester.
A+
 

Pièces jointes

  • Calendrier.zip
    43.4 KB · Affichages: 63
  • Calendrier.zip
    43.4 KB · Affichages: 63
  • Calendrier.zip
    43.4 KB · Affichages: 65
  • formposition.ZIP
    32.1 KB · Affichages: 52

Discussions similaires