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)

Bonsoir Boisgontier

Je suis déjà tomber sur cette page mais c'est malheuresement pas cela que je souhaite :)

En faite c'est créer le calendrier sur un suerform en VBA sans que celui disparaisse si on passe à une autre version d'excel.
 

13GIBE59

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

Bonjour Richert90, bonjour Boisgontier

Essaie ça, en pièce jointe.
 

Pièces jointes

  • Calendrier.xlsm
    31.8 KB · Affichages: 286
  • Calendrier.xlsm
    31.8 KB · Affichages: 298
  • Calendrier.xlsm
    31.8 KB · Affichages: 303

richert90

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

Merci pour la pièce jointe
Code très compliqué pour comprendre pour quelqu’un comme moi :p
Du coup comment je peux faire pour faire ressortir la date au final sous format jj/mm/aaaa? (surtout pour le jour?)
Merci d'avance
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix

Pièces jointes

  • Copie de Form_DateSaisie1Date2.xls
    62.5 KB · Affichages: 235
Dernière édition:

richert90

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

Re,

Merci à vous deux , vos codes marchent niquel
J'ai plus compris celui de BOISGONTIER car j'arrive à récupérer plus facilement la date sous la forme DD/MM/AAAA dans un variable

Mais merci à vous en tout cas ;)
 

richert90

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

Rebonjour,

J'ai une petite question concernant le calendrier de BOISGONTIER:

En fait j'utilise 2 fois tes calendriers pour avoir 2 dates: une de début et une de fin.
Une fois stockée dans des variables en récupérant le TextBox1 des 2 calendriers, je veux filtrer une base selon les dates en ne gardant que les lignes dont la date (donnée en 1ere colonne) est située entre les 2 dates données par les calendriers.
Le calendrier marche bien mais quand j'applique le filtre le format de date est mm/yy/aaaa. Par exemple si la date du début du calendrier 1 est le 05/06/2012 et celle de fin est le 10/12/2012 , Excel va garder les lignes avec les dates comprises entre le 06/05/2012 et le 12/10/2012.

Voila est-ce que tu aurais une solution pour arranger cela?

J'ai bien essayer ça, sans succès:

Code:
 Dim startdate As Single
   Dim enddate As Single
    
    
    'On modifie le format date pour avoir un format JJ/MM/AAAA et non pas un MM/JJ/AAAA:
   'startdate = CDate(Format(F_calendrier.TextBox1.Value, "dd/mm/yyyy"))
   'enddate = CDate(Format(F_calendrier_fin.TextBox1.Value, "dd/mm/yyyy"))
    
    Sheets(1).Select
    'On applique le filtre sur la date:
    ActiveSheet.Range("$A$1:$" & lettre & i).AutoFilter Field:=1, Criteria1:=">" & startdate, _
    Operator:=xlAnd, Criteria2:="<" & enddate
 

richert90

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

A priori j'ai trouvé la solution, mais j'aimerais avoir votre avis sur celle-ci:

Code:
 startdate = CDate(F_calendrier.TextBox1.Value)
    enddate = CDate(F_calendrier_fin.TextBox1.Value)
    
    Sheets(1).Select
    'On applique le filtre sur la date:
    ActiveSheet.Range("$A$1:$" & lettre & i).AutoFilter Field:=1, Criteria1:=">" & startdate, _
    Operator:=xlAnd, Criteria2:="<" & enddate

Ça marche dans mon cas mais est-ce que ça marcherait sur n'importe quelle version d'Excel qu'elle soit en Anglaise ou en Français?
 

BOISGONTIER

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

Bonjour,

CF PJ

Code:
Private Sub Bfiltre_Click()
    If Not IsDate(Me.date_début) Or Not IsDate(Me.date_fin) Then Exit Sub
    [A1].AutoFilter Field:=3, Criteria1:=">=" & Format(CDate(Me.date_début), "mm/dd/yy"), _
       Operator:=xlAnd, Criteria2:="<=" & Format(CDate(Me.date_fin), "mm/dd/yy")
End Sub

Private Sub Btout_Click()
 On Error Resume Next
 ActiveSheet.ShowAllData
End Sub

Pour choisir 2 dates, utiliser :

http://boisgontierjacques.free.fr/fichiers/Formulaire/FormCalendrierInclus2Dates.xls

JB
 

Pièces jointes

  • FormCalendrierInclus2Datesx.xls
    94.5 KB · Affichages: 172
Dernière édition:

richert90

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

Merci pour ton aide, je vais donc voir pour améliorer la chose en utilisant un seul calendrier pour 2 dates

Je vais regarder tout ça.
Mais juste est - ce que ma solution marche bien dans tous les cas:
Code:
     startdate = CDate(F_calendrier.TextBox1.Value)
    enddate = CDate(F_calendrier_fin.TextBox1.Value)
?
 
Dernière édition:

richert90

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

Bonjour,

Je relance le sujet car depuis un certain moment j'utilise le calendrier de Boisgontier me permettant de choisir 2 dates (pour pouvoir ensuite appliquer des filtres qui me permet de garder toutes les données comprises entres ces dates).

Le problème c'est qu'en utilisant Excel en Anglais, quand je choisis des dates, si je veux prendre le 06/05/2013, il affiche 05/06/2013 et des fois quand je clique sur une date, rien ne s'affiche dans la case (car peut-être vu que les jours et les mois sont inversé , le 14/02/2014 est interprété comme étant le 02/14/2014...)

J'ai essayé de me plonger dans le code mais je ne comprends pas vraiment;
Je pense que ça vient des lignes:

Code:
 Me.date_début = DateSerial(Year(mois_courant), Month(mois_courant), Début - décal)  ' date début
et :
Code:
 Me.date_fin = DateSerial(Year(mois_courant), Month(mois_courant), Fin - décal)  ' date fin

Mais je ne sais pas comment faire pour l'adapter en anglais, c'est à dire pour inversé les jours et les mois..

Merci d'avance pour votre aide

PS: J'ai un moyen de savoir si Excel est en Français ou en Anglais, je peux appelé cette instruction et si c'est en Anglais, modifier ce qui ne vas pas pour cette version concernant le format de date.
 

richert90

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

Bonjour,
Qu'est ce que tu entends par "détecte au démarrage" ?

J'utilise le calendrier de BOISGONTIER car il permet de choisir 2 dates donc c'est mieux approprié pour moi.
est- ce que quelque chose comme ça peut arranger mon problème sur le calendrier de BOISGONTIER?

Code:
  Me.date_fin = DateSerial(Year(mois_courant), Month(mois_courant), Fin - décal)  ' date fin
          
           If Application.LanguageSettings.LanguageID(msoLanguageIDUI) <> 1036 Then ' Si Excel est en Anglais
                Me.date_fin = Format(Me.date_fin, "m/d/yyyy")
            End If
 

cisco38

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

au contraire je le trouve très bien , il y a les N° de semaine la sélection aujourd'hui, c'est juste que si au démarrage le mois et l'année dans les combobox étaient celle du jour cela serait bien car je voudrait bien l'utiliser
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa