créer un calendrier dans un UserForm

C@thy

XLDnaute Barbatruc
Bonjour le forum,

Je voudrais créer un calendrier selon le modèle ci-joint, (mais avec les jours de la semaine en haut, en colonnes,
les flèches pour changer de mois en haut et d'année en bas)
mais dans un USF

Comment puis-je créer les flèches pour changer de mois et d'année, et initialiser les valeurs???
(j'ai essayé avec une scrollbar ou un spinbutton, mais je ne sais pas comment afficher le mois en cours, l'année en cours et faire la navigation sur d'autres mois ou années:confused:)

Merci à vous, si vous avez des idées sur la question ou un exemple à me fournir.

Edit : j'ai mis 2010 car il doit être compatible 2010, mais en réalité, pour l'instant je n'ai que 2003!!

Bises et bonne journée,

C@thy
 

Pièces jointes

  • AffichePetitCalendrier.xls
    41 KB · Affichages: 1 118
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

pour la couleur, je remplace vbcyan par &H8000000F 'gris
&H00C0E0FF& orange clair
&H80FF& 'orange mais plus voyant
&H00C0FFFF& jaune pâle

Bises

C@thy
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Re
Voila nos fichiers avec correction afin d'avoir le 31 Octobre a sa place

Bises
 

Pièces jointes

  • Calendrier_cousu_main_b.xls
    64 KB · Affichages: 242
  • Calendrier_cousu_main_b.xls
    64 KB · Affichages: 245
  • Calendrier_cousu_main_b.xls
    64 KB · Affichages: 277
  • PicDate_XLD.xls
    124 KB · Affichages: 254
  • PicDate_XLD.xls
    124 KB · Affichages: 255
  • PicDate_XLD.xls
    124 KB · Affichages: 225

C@thy

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Pierre-Jean, je trouve ton calendier absolumet SUPER,

j'ai juste une question de curiosité :

je vois le mot "groupebouton", mais je n'arrive pas à distinguer un groupe,

comment as-tu fait ça???

(je suis très intéressée car j'ai aussi créé un calendrier avec 37 boutons, mais j'ai une macro différente (pour le titre) sur chaque bouton,
et je trouve génial d'avoir une seule macro pour le groupe...)

Bises

C@thy
 

pierrejean

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Re

Dans le module de classe:
Code:
Public WithEvents groupebouton As Msforms.CommandButton
Private Sub groupebouton_Click()
.........
.........
End Sub

Dans Module de l'Userform

Code:
Dim Boutons() As New Classe1

Dans Private Sub Userform_Initialize()

Code:
Nb = 0
    For Each Ctrl In UserForm1.Controls
        If TypeName(Ctrl) = "CommandButton" Then
             Nb = Nb + 1
             ReDim Preserve Boutons(1 To Nb)
             Set Boutons(Nb).groupebouton = Ctrl
        End If
    Next
 

pierrejean

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Re

Non , le groupe est defini par les 2 derniers codes fournis
Ici , il s'agit de tous les CommandButton
Si tu veux creer des groupes differents , donne leur un nom avec une partie commune (ex Btn , Btnbis) ensuite tu devras faire:
Code:
Dim Boutons() As New Classe1
Dim Boutons1() As New Classe1
_________

Nb = 0
Nb1=0
    For Each Ctrl In UserForm1.Controls
        If Ctrl.Name like "Btn" Then
             Nb = Nb + 1
             ReDim Preserve Boutons(1 To Nb)
             Set Boutons(Nb).groupebouton1 = Ctrl
        End If
       If Ctrl.Name like "Btnbis" Then
             Nb1=Nb1+1
             ReDim Preserve Boutons1(1 To Nb1)
             Set Boutons(Nb1).groupebouton2 = Ctrl
        End If
    Next

Ceci sous toute reserve (je ne manie pas les modules de classe avec brio)
Le mieux est peut-etre de presenter ton Pb (fichier exemple)
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

OK, PJ, je te joins mon exemple

Bises

C@thy
 

Pièces jointes

  • AffichMiniCalendrtest new.xls
    113.5 KB · Affichages: 147
  • AffichMiniCalendrtest new.xls
    113.5 KB · Affichages: 161
  • AffichMiniCalendrtest new.xls
    113.5 KB · Affichages: 169

Roland_M

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

bonsoir à tous,

Salut à vous PierreJean et Cathy,
si je puis me permettre pour éclairer Cathy:
une astuce est de placer des valeurs dans le Tag du Control qui serviront d'index
perso j'ai mis des Labels au lieu des boutons mais peu importe
exp: je les nomme: 1'Name=J1 et place 1 dans le Tag et ainsi de suite
(perso j'ai mis 42 boutons pour tout couvrir)
une autre astuce est de placer tous ces mêmes controles dans un cadre
ainsi il suffit de boucler sur les controles de ce cadre pour les ctrl.jour
et la valeur dans le Tag sert d'index ! ça simplifie pas mal le code !

EDIT: mise à jour du classeur !
 

Pièces jointes

  • Calendrier Autonome_Rol_M.xlsm
    67 KB · Affichages: 64
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Re

Salut Roland_M

Voila ton calendrier avec le module de classe pour les ToggleButton
NB: J'ai un peu revu egalement l'initialize de l'UF1 (l'ancien code est en commentaire)
 

Pièces jointes

  • AffichMiniCalendrtest new.xls
    113 KB · Affichages: 170
  • AffichMiniCalendrtest new.xls
    113 KB · Affichages: 170
  • AffichMiniCalendrtest new.xls
    113 KB · Affichages: 165

C@thy

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Merci Roland_M, Pierre-Jean,

vous êtes vraiment SUPER!!!

je dois vous avouer un truc... je n'y connais rien dans les modules de classe:eek::eek::eek:

(ah bon, ça se voit???);), mais je trouve ça super

Roland, le 2ème va m'être très utile, PJ, c'est fantastique comme tu as réduit le code!!! quelle merveille!!!

Je vous remercie grandement pour tout votre savoir, que vous partagez si aimablement et qui m'est si précieux.

Mille bises

C@thy
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

re bonjour à tous,

tu peux aussi simplifier, exp pour les jours fériés (sans trop chambouler ton code)

rajoute ce petit sub
Code:
Public Sub ColorButtonOrange(az, jcal)
Controls("Togglebutton" & az + Day(jcal) - 1).BackColor = &HC0E0FF  'orange clair
End Sub

et pour tous les jours fériés reprend les tests comme ceci

Code:
'*********** fériés
If Day(jcal) = 1 And Month(jcal) = 1 Then ColorButtonOrange az, jcal '1'janv
If Day(jcal) = 1 And Month(jcal) = 5 Then ColorButtonOrange az, jcal 'Fête Trav
If Day(jcal) = 8 And Month(jcal) = 5 Then ColorButtonOrange az, jcal 'Vict.1945
If Day(jcal) = 14 And Month(jcal) = 7 Then ColorButtonOrange az, jcal 'Fête Nation
If Day(jcal) = 15 And Month(jcal) = 8 Then ColorButtonOrange az, jcal 'Assomption
If Day(jcal) = 1 And Month(jcal) = 11 Then ColorButtonOrange az, jcal 'Toussaint
If Day(jcal) = 11 And Month(jcal) = 11 Then ColorButtonOrange az, jcal 'Armistice 1918
If Day(jcal) = 25 And Month(jcal) = 12 Then ColorButtonOrange az, jcal 'Noël
'*********** fériés mobiles
Dateactu = CDate(Day(jcal) & "/" & CB2.Value & "/" & An)
TheYear = An: APaq = GregorianEaster(TheYear): Paq = CDate(JDN2Date(APaq))
If Dateactu = Paq Or Dateactu = Paq + 1 Then ColorButtonOrange az, jcal 'Pâques
If Dateactu = Paq + 39 Then ColorButtonOrange az, jcal 'Ascension
If Dateactu = Paq + 49 Or Dateactu = Paq + 50 Then ColorButtonOrange az, jcal 'Pentecôte
 

Modeste geedee

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Bonsour® à tous
Voila ton calendrier ...
../..
NB: J'ai un peu revu egalement l'initialize de l'UF1

moi aussi , et avec ta complicité
dixit C@thy
Arf! Vous êtes des petits filous, tous les deux!!!
rajouter un bouton au lieu d'utiliser la 1ère ligne, qui reste vide...
sont-ce des manières???
:cool:
j'ai revu ma copie PICDATE-XLD afin de rendre l'ensemble facilement portable dans un classeur( nouveau ou existant)
  • seulement 37 CmdButton date, et utiliser la 1ère ligne
    remplacement de la fonction Lundi
    le décalage est obtenu via la fonction de feuille WeekDay
  • défilement continu de la période choisie (an+, an-1,mois+, mois-)
  • un seul module à installer
  • suppression du module de classe
  • ajout d'un panel choix des teintes


mode d'installation en 3 étapes :

1 - créer un style personalisé destiné à activer le PicDate
Regarde la pièce jointe 852149

2 - Importer au niveau de VBE le module Userform : PicDateXLD.frm qui est contenu dans le zip ci-joint.
Captureimport.JPG
(impérativement extraire préalablement les deux fichiers du .zip dans le même répertoire de travail que le classeur actif)

3 - modifier l'événement de déclenchement (module de feuille ou thisworkbook)
exemple de code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Cells.Count = 1 Then
Application.StatusBar = ""
    If Target.Style = "EntréeDate" Then
        Application.StatusBar = "PicDate XLD"
        PicDateXLD.Top = ActiveCell.Top + 100
        PicDateXLD.Left = ActiveCell.Offset(0, 1).Left + 25
        PicDateXLD.Show
    Else
        Unload PicDateXLD
    End If
Else
    Application.StatusBar = "sélections multiples !"
End If
End Sub

en l'attente de vos test...
gros probleme existentiel :confused: :cool:
lorsque la date du jour est un week-end et de plus fériée , quelle couleur privilégier parmi les 4 possibles ???

edit : mise à jour procédurale, actualisation fichier compressé(PicdateXLD.frm +PicdateXLD.frx)
 

Pièces jointes

  • PicdateStyle.JPG
    PicdateStyle.JPG
    26.8 KB · Affichages: 154
  • PicDateXLD (3).zip
    5.7 KB · Affichages: 101
  • PicDateXLD (3).zip
    5.7 KB · Affichages: 97
  • PicDateXLD (3).zip
    5.7 KB · Affichages: 99
  • Captureimport.JPG
    Captureimport.JPG
    36.1 KB · Affichages: 136
  • Captureimport.JPG
    Captureimport.JPG
    36.1 KB · Affichages: 167
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Re

Arf !!!
J'ai un problème : je ne parviens pas à importer le .frm . C'est surement du à mon incompetence (c'est la 1ere fois que je fais cette manip)
Peux-tu me faire un petit pas à pas S.T.P
 

Modeste geedee

XLDnaute Barbatruc
Re : créer un calendrier dans un UserForm

Bonsour® PierreJean

d'abord enregistrer le zip sur ton disque.
ensuite click droit sur le fichier Zip
menu contextuel : Extraire tout
c apture import 0.JPG
choisir la destination : ? mes documents

puis depuis un nouveau classeur, Alt-F11 accès à VBE
fenetre de projet : Importer
Captureimport.JPG
ouvrir
Captureimport3.JPG
et voilà
Capture import4.JPG
 

Pièces jointes

  • Captureimport.JPG
    Captureimport.JPG
    36.1 KB · Affichages: 180
  • Captureimport.JPG
    Captureimport.JPG
    36.1 KB · Affichages: 177

Discussions similaires

Réponses
9
Affichages
384
Réponses
1
Affichages
134