Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

richert90

XLDnaute Occasionnel
Bonjour,

J'ai insérer dans un userform un calendrier avec DTPicker. le problème c'est que je viens de voir que sur Excel 2007 ou 2013, on ne voit plus les calendriers....
Je voudrais savoir si vous aviez un code pour avoir un calendrier qui fonctionne quelle que soit la version d'Excel et sans avoir besoin de téléchargez des modules complémentaires.

Merci d'avance,
 

richert90

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

Je l'ai testé que sur mon excel qui est en Français. J'ai pas encore eu l'occasion de le tester sur Excel en Anglais. Mais d'après ce que tu me dis comme c'est en format date (système) , sur l'excel en anglais, les date seront forcément au format MM/JJ/AAAA?
 

richert90

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

Re,
J'ai eu l'occasion de faire le test sur Excel en Anglais... et ça marche: quand je sélectionnes des dates (debut, fin), j'ai le format JJ/MM/AAAA !!!!!
Enfin depuis le temps que je cherchais.
Plus qu'à insérer le code de ce calendrier de mon application et totu sera bon :)
Merci Roland_M pour ton aide. Je reviens si j'ai un pb à l'utilisation de celui-ci
 

richert90

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

Re,

Je reviens vers vous car quelque chose beug:

Code:
Public Sub CalendrierDTPDateDebut(fmME As Object)
M$ = "Début? " & CalendrierDateDebutSELECT & "-" & CalendrierDateFinSELECT
CalendrierLoadInitShow fmME, M$, CalendrierDateDebutSELECT
If CalendrierDateSELECT Then
   fmME.DTPDateDebut = CalendrierDateSELECT
   Dim DatFin As Date: DatFin = fmME.DTPDateFin
   If CalendrierDateSELECT > DatFin Then DatFin = CalendrierDateSELECT
   CalendrierDateDebutSELECT = CalendrierDateSELECT
   CalendrierDateFinSELECT = DatFin: fmME.DTPDateFin = DatFin
End If
End Sub

à la 2ième ligne: le M$. Voici le message d'erreur:
"Erreur de compilation
le caractère de déclaration de type ne correspond pas au type de donnée déclaré ".

Voici ma démarche:
Dans un useform j'ai différents paramètres (comme la date) qu'un utilisateur peut choisir pour filtrer sur ces paramètres.
Pour la date, j'ai un bouton qui appelle UserfPersoAvec2Date. C'est en cliquant sur DTPDateDebut (pour choisir une date dans la calendrier) que ce message apparaît!

Merci d'avance de l'aide!
 

Roland_M

XLDnaute Barbatruc
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

re

si tu as une erreur sur M$ c'est certainement que tu as déclaré public M As !? exemple Integer !?
essais de modifier M$ en une autre variable !

Quand au reste, il faut joindre un classeur, sinon comme ça c'est pas évident !
 

richert90

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

bonjour,

bah je n'ai rien touché à ton code, j'ai juste supprimé le userform où il y a une date à choisir car je choisis 2 dates.
et où se fait la déclaration de cette variable M$ car je ne le trouve pas..
Merci d'avance
 

Roland_M

XLDnaute Barbatruc
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

bonjour à tous,

ça ne serait pas plutôt cette ligne que je trouve bizarre ?
CalendrierLoadInitShow fmME, M$, CalendrierDateDebutSELECT

si tu pouvais joindre ton classeur sans données perso !

EDIT:

je viens de voir l'erreur !
tu ne dois absolument pas utiliser le module > ModSTD_Calendrier
tu ne dois rien mettre dans ce module, il sert à l'userform Calendrier !
l'userf fmSTD_Calendrier et son module ModSTD_Calendrier sont réservés !

tu dois avoir ton propre module comme dans l'exemple
et/ou dans les UserfPersoAvec1Date/UserfPersoAvec2Date
 
Dernière édition:

richert90

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

Re,

Si je n'utilise pas le module ModSTD_Calendrier, comment je fais dans le module UserfPersoAvec2Date et dans la procédure DTPDateDebut_Click() et DTPDateFin_Click()?? car j'utilise directement les procedures du module ModSTD_Calendrier?
 

richert90

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

Re,

Je joins un fichier test de mon application,
C'est dans le deuxième onglet , en cliquant sur le bouton que vous aurez la fenêtre avec les filtres. On s’intéresse donc ici au bouton 'calendar' qui génère le calendrier. (comme c'est un fichier test réduit,la zone de liste pour l'article n'est pas renseigné mais elle nous intéresse pas.)
 

Pièces jointes

  • test.xlsm
    124.5 KB · Affichages: 62
  • test.xlsm
    124.5 KB · Affichages: 70
  • test.xlsm
    124.5 KB · Affichages: 73

Roland_M

XLDnaute Barbatruc
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

re,

'1'----- dans ton module de travail ------
'exemple AVEC 2 DATES soit (CalendrierDateDebutSELECT et CalendrierDateFinSELECT)
'Sub TonSubDeLancementDeTonBouton() !? 'comme dans le module avec Sub Exemple !
'-- tu initialises les dates que tu veux ici avant appel de l'userf
'-- tu n'es pas obligé ce sera mis d'office à la date en cours.
'CalendrierDateDebutSELECT = Date
'CalendrierDateFinSELECT = Date + 1
'-- tu lances l'userf
'UserfPersoAvec2Date.Show
'...
'ici suite de code
'...
'...

'End Sub

'2'----- dans UserfPersoAvec2Date tu as ButtonOk_Click()
'------- c'est là la suite de code ou tu fais ce que tu souhaites
'------- avec les 2 vars> CalendrierDateDebutSELECT CalendrierDateFinSELECT
'Private Sub ButtonOk_Click()
'là ou j'ai mis Msgbox, tu disposes de CalendrierDateDebutSELECT CalendrierDateFinSELECT
'.. et bien entendu tu supprimes Msgbox c'est pour la demo
'suite de ton code puis en sortie après Unload Me
'je sais pas ensuite ce que tu veux faire .... !?
'...
'...
'Unload Me

'End Sub
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

re,

j'ai regardé ton classeur tu n'utilises pas correctement le calendrier
il te faut le reprendre pour supprimer toutes tes modif qui font tout planter !

c'est ici que ça se passe:

Private Sub Bouton_appel_calendrier_Click()
Filters.Hide

'pas de > F_calendrier2dates.date_début !!!!!!!!!!
'pas de > F_calendrier2dates.date_fin !!!!!!!!!!

'en retour tu disposes des deux vars ci-dessous pour la suite dans code ici !!!!
'CalendrierDateDebutSELECT et CalendrierDateFinSELECT

'c'est aussi simple que ça !
'bien entendu tu supprimes le Msgbox qui ne sert pour la demo !

EDIT:
je remet les classeurs simplifiés !
mais après ça ... !?
 

Pièces jointes

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

Docmarti

XLDnaute Occasionnel
Re : Calendrier Excel VBA (qui marche sur toutes les versions d'Excel)

Bonjour.

re ... ok !

tiens nous au courant ! ça m'intéresse de savoir.
si quelqu'un passe et qu'il a une version anglaise
je joins le classeur pour essai, merci.


Je l'ai testé après avoir choisi Anglais(Etats-Unis) dans les paramètres régionaux et linguistiques du Panneau de Configuration.
Et les appels à la procédure CalendrierMiseAjour(D As Date) ne fonctionnent plus.

Cordialement

Docmarti
 

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 806
Membres
102 984
dernier inscrit
k.robert