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)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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,
 
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.
 
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

Dernière édition:
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)
 
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?
 
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?
 
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.
 
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?
 
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.
 
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.
 
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.
 
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?
 
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
 
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..........
 
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 !?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…