Inputbox format date (besoin d'un 2ème regard)

  • Initiateur de la discussion Membre supprimé 156683
  • Date de début
M

Membre supprimé 156683

Guest
Bonjour à tous,

Je réalise une Inputbox où la personne indique une date dont je me sers comme donnée pour filtrer automatiquement une colonne;

Sub()

K = InputBox("Date ? ", Format(Date, "dd/mm/yyyy"))
If K = "" Then Exit Sub
Sheets(1).Select

Selection.AutoFilter Field:=13, Criteria1:=">=" & CDate(K) & "", Operator:= _
xlAnd

End Sub

Le problème est que la date retournée (même si elle est au format dd/mm/yyyy)
apparait dans la boite de l'autofiltre au format mm/dd/yyyy lorsque dd est inférieur à 12.

C'est un problème connu, j'ai donc essayé plein de codes différents mais rien n'y fait (voir fichier joint).
D'ailleurs même si j'indique une date comme 24/05/2010, le filtre ne fonctionne pas.

J'aurais donc besoin d'un 2ème regard sur mon code SVP.

Merci d'avance.

M&m
 

Pièces jointes

  • EXTRAIT.zip
    14.5 KB · Affichages: 38
  • EXTRAIT.zip
    14.5 KB · Affichages: 40
  • EXTRAIT.zip
    14.5 KB · Affichages: 39
M

Membre supprimé 156683

Guest
Re : Inputbox format date (besoin d'un 2ème regard)

Tout d'abord merci masterdisco de m'avoir répondu,

je viens d'essayer ta solution mais au final j'ai toujours le même problème:

la date retournée par "Tadate" dans le filtre se met au format US (au lieu de 10/03/2010 elle me retourne 03/10/2010) :(

Je ne comprends vraiment pas d'où viens ce problème, j'ai même regardé les paramètres régionaux de mon Windows ainsi que ceux d'Office ^^ (tous les 2 en FR bien entendu)

Need help please !

M&m
 
M

Membre supprimé 156683

Guest
Re : Inputbox format date (besoin d'un 2ème regard)

C'est parfait, il fallait apparemment redonner le format quand la variable est utilisée :x bref !

Merci Pierrot !

Bonne journée

M&m
 

La Haine

XLDnaute Nouveau
Bonjour à tous !

Je remonte ce fil car j'ai le même souci mais je n'arrive pas pour autant à le résoudre (d'ailleurs, il ne manque pas une page à cette conversation ? Oo)

En effet, dans une InputBox, la personne indique la date au format dd/mm/yyyy (avec date du jour pré-indiquée), qui se renvoie dans une cellule. Malheureusement, dans la cellule , si la date est inférieure au 13 du mois, il est écrit la date au format mm/dd/yyyy même si le format de la cellule reste bien en dd/mm/yyyy... du coup la date est fausse !

Voici le code :

Code:
Sub Inputbox_format()
    Dim LaDate As String
    LaDate = Format(Date, "dd/mm/yyyy")
    Do
        LaDate = Application.Inputbox("Entrez la date du jour de calcul désiré au format jj/mm/aaaa :", "Date", LaDate)
    Loop Until IsDate(LaDate)
    Worksheets("Divers").Range("B19").Value = LaDate
End Sub

J'ai essayé en changeant le format de ma variable As Date mais ça me fait l'inverse !

Comment puis-je résoudre ce format de date ?

Merci !
 

La Haine

XLDnaute Nouveau
Bonjour MJ13 et merci pour ta réponse.

Alors ok pour le As Date, ça fonctionne en effet (j'avais déjà testé), mais la date pré-indiquée est elle inversée sous le format m/d/yyyy. Ce qui est du coup trompeur car si l'utilisateur valide cette date, il n'aura pas le bon jour (sans compter que le format n'est plus le bon je ne sais pas pour quelle raison). Comme 90% du temps, la date de calcul est bien celle du jour, j'aimerais que celle-ci soit affichée par défaut, ce qui fonctionne en String.

Concernant CDate, merci pour l'info, je l'ai essayé un peu dans tous les sens et un peu partout, je ne sais pas comment l'utiliser. Qu'est-ce qu'il est censé faire exactement ?

Merci
 

MJ13

XLDnaute Barbatruc
Re

Tu peux tester ce code: Cdate permet de convertir un texte en date (voir l'aide sur la fonction cdate).

VBA parle anglais, donc il vaut mieux lui parler en mm/dd qu'il traduira normalement en jj/mm avec cdate.

VB:
Sub Inputbox_format()
    Dim LaDate As Date
    LaDate = Format(CDate(Date), "mm/dd/yyyy")
    Do
        LaDate = Application.InputBox("Entrez la date du jour de calcul désiré au format jj/mm/aaaa :", "Date", Format(LaDate, "mm/dd/yyyy"))
    Loop Until IsDate(LaDate)
    Worksheets(ActiveSheet.Name).Range("A2").Value = CDate(LaDate)
End Sub
 

La Haine

XLDnaute Nouveau
Merci MJ13, c'est la subtilité pourtant logique d’inversement des jours et des mois que je n'avais pas intégré, tu lui parles en anglais, il te traduit selon sa configuration. Et forcément, pour que l'InputBox garde le format désiré, il faut également lui signaler : c'est pour ça qu'il me le conservait quand ma variable était en String car c'était du texte !

En revanche, pour l'écriture dans la cellule, je ne sais pas pourquoi il faut de nouveau convertir LaDate puisqu'on l'a déjà fait.

En tout cas, un grand merci, ça fonctionne !

Bonne soirée !
 

Statistiques des forums

Discussions
312 393
Messages
2 088 005
Membres
103 695
dernier inscrit
acimi