InputBox format date

Bonjour à tous,

Exemple : je rentre dans InputBox : mai07 , j'ai besoin de récupérer la réponse au

format : JJ/mmm/aa

ensuite, à cette réponse il faut ajouter " >="

résultat souhaité : >=01/mai/07 ....(c'est un critère de BD).

en fait je cherche à traduire en VBA la macro Exel4 ci-dessous

A16=TEXTE(ENTRER("depuis quelle date ?";2;"précisez");"jj mmm aa")

puis

A18=FORMULE(TEXTE(">="&A16;"jj mmm aa");relevé!F8)

d ' avance merci.

Claude.

Juste une question, dois-tu obligatoirement entrer mai07 ou peux-tu entrer mai 07 ou 07 mai, etc..? En VBA la fonction DateValue peut te retourner une date sauf que si tu écris mai07 ensemble il faudrait coder pour les séparer.

salut Math, BONNE et HEUREUSE !

Oui je peux entrer mai 07 (avec un espace) si çà simplifie.

Seul compte le résultat final : <=01/mai/07 et là sans espace.

dans ma base de données , çà va extraire toutes les dates à partir de mai 07.

à te lire.

Claude.

Salut Claude,

voici un petit bout de code, en passant tu peux très bien écrire mai07 et ça va fonctionner. Tant que tu t'en tien a un format mmmaa ca devrait fonctionner. C'est peut-être pas le plus optimal des codes mais il fonctionne.

Private Sub cmdGetDate_Click()

    Dim DateEntrer As Date
    Dim StrDateBrut, StrMois, StrAnnee, strFinal As String

    StrDateBrut = InputBox("Entrez la date")
    StrAnnee = Right(StrDateBrut, 2)
    StrMois = Left(StrDateBrut, Len(StrDateBrut) - Len(StrAnnee))
    DateEntrer = DateValue(StrAnnee + " " + StrMois + " 01")

    strFinal = "<=" + Format(DateEntrer, "dd/mmm/yy")

    Range("a1").Value = strFinal

End Sub

Au plaisir et bonne année

re,

je viens de tester ton code , c'est sur la bonne voie, seulement il y a inversion ;

on obtient >=07/mai/01

J'ai essayé d'inverser dans le code mais çà plante . je préfère te demander , c'est

surement pas trés grave !

par la même occasion, pour ma gouverne ; les déclarations dans le code , les Str....

Ce sont des termes système ou bien des termes que tu baptise ?

Tusais ,je suis un ancien d'Excel , mais je démarre seulement en VBA.

je suis en pleine ré-écriture de mes fichiers . tu vois le boulot !!

à te lire

Claude.

Bonjour Claude,

au sujet des str, c'est juste une façon de se retrouver dans le code. On fait précéder la variable par un préfixe identifiant sont type ( str = string ). Quand je teste le code chez moi, ça fonctionne et l'année est à la bonne place. tu peux toujours essayer de modifier la ligne suivante :

DateEntrer = DateValue(StrAnnee + " " + StrMois + " 01")

par

DateEntrer = DateValue( "01 " + StrMois + StrAnnee)

c'est peut-être un problème de paramêtre régional, le mien doit être différent ( aa-mm-jj )

Lache pas avec VBA, les possibilités sont multiples.

re,

çà marche nickel !

il faut l' espace mais c'est pas gênant . c'est même + logique.

Excel est quand même une belle mécanique ! . Que l' on entre Nov ou Novembre çà marche.

Je te remercie vivement , j'ai bien avancé sur ce fichier.

Sans abuser, puisque tu as l'air de toucher en VBA ; si tu pouvait jeter un oeil sur

mon POST + bas "Déplacement fenêtre"

Encore merci.

Claude.

Math,

je dois pouvoir extraire de la base les date comprises entre mai 04 et mai 06 par exemple.

j'ai donc recopié le code à la suite ; c'est bon si je rentre les 2 dates.

mais je voudrais avoir la possibilité de sauter cette 2ème date c'est à dire ne rien entrer

dans le 2ème InputBox.

et là je perd mes bas avec les IF (je voudrais sauté le 2ème code)

voila ou j'en suis,

 StrDateBrut = InputBox("Entrez la 1ère date")
                StrAnnee = Right(StrDateBrut, 2)
                    StrMois = Left(StrDateBrut, Len(StrDateBrut) - Len(StrAnnee))
                        DateEntrer = DateValue("01 " + StrMois + StrAnnee)
                            strFinal = ">=" + Format(DateEntrer, "dd/mmm/yy")
                                Range("f8").Value = strFinal
      '' ICI j'ai recopié le code précedent pour la 2ème entrée (facultative)
StrDateBrut = InputBox("Entrez la 2ème date")
''If StrDateBrut = "" Then
''GoTo cherche
''End If
    StrAnnee = Right(StrDateBrut, 2)
    StrMois = Left(StrDateBrut, Len(StrDateBrut) - Len(StrAnnee))
    DateEntrer = DateValue("01 " + StrMois + StrAnnee)
    strFinal = "<=" + Format(DateEntrer, "dd/mmm/yy")
       Range("f9").Value = strFinal
cherche ''la macro qui extrait la sélection
End Sub

c'est un problème de IF ou Goto ou ????

Bon on verra çà demain

amicalement ......Claude.

Salut le forum

A tester

Sub cmdGetDate()

    Dim DateEntrer As Date
    Dim StrDateBrut, StrMois, StrAnnee, strFinal As String

StrDateBrut = InputBox("Entrez la 1ère date")
                StrAnnee = Right(StrDateBrut, 2)
                    StrMois = Left(StrDateBrut, Len(StrDateBrut) - Len(StrAnnee))
                        DateEntrer = DateValue("01 " + StrMois + StrAnnee)
                            strFinal = ">=" + Format(DateEntrer, "dd/mmm/yy")
                                Range("f8").Value = strFinal
      '' ICI j'ai recopié le code précedent pour la 2ème entrée (facultative)
StrDateBrut = InputBox("Entrez la 2ème date")
Range("f9").Value = ""
If StrDateBrut <> "" Then
    StrAnnee = Right(StrDateBrut, 2)
    StrMois = Left(StrDateBrut, Len(StrDateBrut) - Len(StrAnnee))
    DateEntrer = DateValue("01 " + StrMois + StrAnnee)
    strFinal = "<=" + Format(DateEntrer, "dd/mmm/yy")
       Range("f9").Value = strFinal
End If
End Sub

Mytå

Le problème est dans la goto, tu dois terminer mot par : comme ceci

StrDateBrut = InputBox("Entrez la 2ème date")
If StrDateBrut = "" Then
    GoTo Cherche
Else
    StrAnnee = Right(StrDateBrut, 2)
    StrMois = Left(StrDateBrut, Len(StrDateBrut) - Len(StrAnnee))
    DateEntrer = DateValue("01 " + StrMois + StrAnnee)
    strFinal = "<=" + Format(DateEntrer, "dd/mmm/yy")
    Range("f9").Value = strFinal
End If

Cherche: 'oublie pas les : ici

Quand tu appelles le goto cherche ne prend pas de : mais quand tu le déclare ça en prend.

Bonjour à tous,

Mytå, ta solution est tellement évidente, que j"ai honte d'avoir buter là-dessus.

Math, pour ma gouverne ; çà peut servir pour l'avenir : la macro "cherche" étant appelée

par d' autres macros ; le fait de mettre les ": " (cherche:) ne poserait-il pas de problème ?

Merci FORUM.

Quand je pense qu'il y a seulement un mois, je n'aurais même pas oser me lancé dans la

ré-écriture de ce fichier !! (+ de 350 lignes d'instruction).

J'ai fait les 4/5 et finalement grâce à vous , çà avance bien !!

à+ pour d"autres questions.

Amicalement.......Claude.

En fait Claude j'avais mal interpreté ton code, il est possible en VBA de définir des étiquettes et y accéder avec la commande goto ex:

...début du code
On ERROR Goto fin
... suite du code
Exit sub

fin:
.. code a effectuer en cas d'erreur
End sub

Dans le code qui suit, si la procedure rencontre une erreur, la lecture du code se déplace vers l'étiquette fin et effectue le code en cas d'erreur, sinon la procédure se termine avec la ligne Exit sub. Les : servent uniquement à définir une étiquette. C'est ce que je pensais que tu faisais dans ton code. Pour ma part, j'appelle mes procédures (macro) avec CALL NomProcedure.

Bonne journée

Bonjour Math,

Merci pour toutes tes explications et du temps que tu me consacre , j' en prend bonnes

notes.

je vais adopter aussi, le CALL. çà facilite la visibilité de l' ensemble de la procédure.

amicalement

Claude.

Rechercher des sujets similaires à "inputbox format date"