Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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)

Re,

Oui je ne dis pas qu'il est pas bien loin de là, mais je pense qu'il est moins adapté dans mon cas étant donné que je cherche à obtenir 2 dates.
 

BOISGONTIER

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

Bonjour,

Je n'ai pas Excel Anglais. La fonction langue() permet de détecter la langue (1036 pour Français)

Code:
Function Langue()
  Langue = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
End Function

Peut être?

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

Function Langue()
  Langue = Application.LanguageSettings.LanguageID(msoLanguageIDUI)
End Function

JB
 

Pièces jointes

  • FormCalendrierInclus2Datesx-1.xls
    98 KB · Affichages: 92
Dernière édition:

Docmarti

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

Bonjour richert90;


Pour que la date tienne compte des paramètres régionaux, remplace

Code:
 Me.date_début = DateSerial(Year(mois_courant), Month(mois_courant), Début - décal)
par
Code:
Dim dt As Date
        dt = DateSerial(Year(mois_courant), Month(mois_courant), Début - décal)
        Me.date_début = dt

Avec la même technique, remplace aussi
Code:
Me.date_fin = DateSerial(Year(mois_courant), Month(mois_courant), Fin - décal)
 

richert90

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

Bonjour BOISGONTIER,

Merci pour la réponse,

Je n'ai pas Excel en Anglais à ma disposition maintenant, j'essayerai ton code dès que je pourrai et je te retiendrai au courant.

Mais à ce que je vois il n'y aurai rien à changer dans le code concernant le calendrier? c'est à dire que la date serait en version Anglaise ou Française selon la langue d'Excel mais lors du filtre elle serait "remise" correctement en version francaise?
 

richert90

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

Bonjour Docmarti
Comme dit avant, j'essayerai ton code également dès que je peux le refaire sur une version Anglaise.
Ta modification permettra donc d'afficher (sur un Excel en Anglais) dans les TextBox les dates au format associé à la langue du système? C'est à dire JJ/MM/AAAA pour un Excel en Français et MM/DD/AAAA pour un Excel en Anglais?
 

Roland_M

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

bien le bonjour à tous !

je propose toujours mon calendrier !?
 

Pièces jointes

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

Docmarti

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

A mon avis elle fonctionnera sur la plupart des versions d'Excel, russe, chinoise, polonaise, etc.

Tu peux le tester en changeant tes paramètres linguistiques et régionaux.
 

richert90

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

Re,

En effet, j'ai essayé de changer mes paramètres linguistiques dans "option" --> "Langue" et j'ai mis Anglais comme langue d'édition mais en redémarrant Excel , c'est toujours en Français.

Roland, je vais regarder ton calendrier également merci. Concernant les formats de dates selon la langue ce sera bon tu penses?
 

Docmarti

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

Re,

En effet, j'ai essayé de changer mes paramètres linguistiques dans "option" --> "Langue" et j'ai mis Anglais comme langue d'édition mais en redémarrant Excel , c'est toujours en Français.

Je ne parlais pas de la langue d'édition sélectionnée dans Exel par Options/Standard/Paramètres linguistiques.

Je parlais des Paramètres régionaux et linguistiques dans le Panneau de Configuration de Windows. Si tu choisis Anglais ou Suisse, tu verras les dates changées instantanément sur les feulles Excel sans avoir besoin de redémarrer Excel.
 

richert90

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

Bonjour,
En effet en changeant les les paramètres régionaux, les dates ont bien été changés sur les feuilles Excel,

Mais les dates je les récupère d'un fichier, elles sont donc en Français à chaque fois, Excel lui est en Anglais mais les dates en Français.C'est donc juste la langue d'Excel qui est modifié et pas de Windows. Je veux juste que dans le calendrier d'Excel, les champs dates apparaissent bien sous la forme JJ/MM/AAAA pour ensuite pouvoir correctement filtrer.
 

Staple1600

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

Bonsoir à tous

Une suggestion en passant
les champs dates apparaissent bien sous la forme JJ/MM/AAAA pour ensuite pouvoir correctement filtrer.
Personnellement, je convertis les Dates en Long ,c'est ainsi plus simple pour utiliser les filtres avec des dates.
 

richert90

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

Bonsoir,

C'est à dire, une fois récupérées les dates, tu les modifie en Long puis t'appliques ton filtre comme cela ?
Pourquoi c'est plus simple?
 

Staple1600

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

Bonjour à tous

richert90:
Lances ce code VBA d'illustration de mes propos précédents dans un classeur vierge.
Copies le code dans un module standard et exécutes la macro a
L’avantage (à mon sens) c'est que de cette façon tu ne soucis pas de savoir si tes dates sont au format
dd/mm/yyyy ou mm/dd/yyyy.
Ne pas oublier ce que nous dit l'aide d'Excel à propos des dates
Code:
Private Sub crea_sample()
[A1] = "DATES": [A2:A30].FormulaLocal = "=AUJOURDHUI()+MOD(LIGNE();5)"
End Sub
Sub a()
critD = CDate(InputBox("Date de début", "Critères de filtre", Date))
critF = CDate(InputBox("Date de fin", "Critère de filtre", Date + 2))
crea_sample
MsgBox "Application d'un filtre automatique avec des dates converties en Long", vbInformation
[A1].CurrentRegion.AutoFilter 1, ">=" & CLng(critD), xlAnd, "<=" & CLng(critF)
End Sub
 

richert90

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

Bonjour à tous,

Alors j'ai essayer la solution de Docmarti mais malheuresement ça ne marche pas: dans le userForm calendrier avec une version Anglaise si je choisis le 20/04/2012 j'ai, dans le textbox "date_début" : 04/20/2012....

Je me suis penché vers le calendrier de Roland_M :mais en lisant el code j'ai une question: la date récupérée est toujours au format JJ/MM/AAAA?

Merci d'avance, ces formats de dates me posent soucis depuis bien longtemps..........
 

Roland_M

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

bonjour à tous,

les formats sont au format date ! donc système !
mais si tu essais mon classeur tu dois bien voir le résultat ?

perso je n'ai jamais eu l'occasion de voir l'autre format !?
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…