IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Récupérer jour, mois et année à partir d'une date [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Récupérer jour, mois et année à partir d'une date
    Bonjour à tous et par avance merci de l'attention que vous porterez à ma requête.

    Alors voila je dois gérer une base de données déjà existante, et j'ai décidé qu'à partir de maintenant, un formulaire (une bonne trentaine de combobox) serait l'unique moyen d'incrémenter la base de données.

    Pour la saisie de dates, j'ai choisi de mettre en place 3 combobox fermés par date : 1 pour la date, 1 pour le mois, 1 pour l'année.

    Le tout se combinant de facon magique pour ne remplir qu'une seule cellule sur la feuille excel, sous la forme dd/mm/AA.

    Pour l'instant pas de soucis.

    Mais voila il m'est indispensable de rajouter un bouton modifier, qui permet en inscrivant la ligne désirée, de modifier les données présents sur cette ligne. Le formulaire s'affiche et "charge" les données alors inscrites sur la feuille excel. Tout se passe bien, mais pour les dates j'ai un souci.

    Car d'une inscription dd/mm/AA, il faut que j'en extrait 3 infos qui chacune va venir renseigner la combobox jour, mois, et année.

    Il y a bien la fonction day(), month(), année(), mais je n'arrive pas à l'utiliser, serait-ce parce que ces fonctions demandent une donnée de type date, et que la date inscrite dans ma cellule est de type string ?

    Sinon j'ai essayé les fonctions left( , 2) pour le jour, right ( , 2) pour l'année, et mid ( , 4, 2) mais ca ne semble pas fonctioner non plus...

    Je suis à court....

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    tu peux utiliser day, month et year, mais il te faut convertir ton texte en date avant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Day(CDate(Range("F5").Value))
    Bon courage
    Jérôme

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    essaye

    ma_date = FormatDateTime (la_date_de_depart, 1)

    dans ma date tu as maintenant la date au format complet définit dans tes paramètres régionnaux
    Ya plus qu'à faire des left right and co pour récupérer ce que tu veux

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour tous,
    Peut-être une autre façon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim TB
    TB = Split(Range("A2"),"/")
    Le jour se retrouve avec TB(0), Mois dans TB(1) et année dans TB(2)
    A+
    Edit:
    Suite à l'intervention de David je précise, ma proposition sera optimum si la cellule est au format Text.

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2009
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 121
    Points : 119
    Points
    119
    Par défaut
    ca change pas le problème qu'il a de format
    ou alors il formate la cellule comme il faut.

    Sinon il faudra d'abord passer par la fonction que je propose
    puis par celle de le_forestier avec " " comme caractère de séparation.

  6. #6
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Merci à tous pour vos réponses, j'ai pris celle de Le Forestier, qui me convient parfaitement.

    Une dernière question : les combobox pour la date sont fermées. J'aimerais tester si les valeurs TB(0), TB(1) et TB(2) sont bien présentes dans les listes des combobox, respectivement de 01 à 31 pour les jours, janvier à décembre pour les mois etc...

    Vous allez me dire : pourquoi faire ce test, étant donné que ce que je veux tester ne dépasse pas le champ des listes des combobox, puisque c'est par celles-ci que je les ai saisi ?
    Parce que je veux que mon programme soit nickel et je pense (modestement, je suis débutant en vb) que ce test peut y contribuer.

    Donc voici ma question : comment procéder pour tester si la valeur TB(0) par exemple appartient à la liste de la combobox des jours, idem pour mois et année.

    Je sais que ca existe mais bon je patauge un peu, et l'échéance de mon travail expire sous peu...


  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Test si la cellule est au format date

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if IsDate(range("A2").value) then
    Jérôme

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2009
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    oui tu as raison jfontaine, ca peut suffire, mais pour ma connaissance vbaistique, j'aimerais savoir comment tester si une valeur fait partie d'une liste combobox. Y a-t-il une fonction dédiée ou faut-il en créer une ?

    Merci

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Je ne pense pas que ce soit nécessaire de tester, normalement cela aurait dù être fait lors de l'initialisation.
    Mais je suppose que tes comboBox sont intialiser, celui des jours avec le nombre de Jours ?
    Si oui, en mettant ComboJour.ListIndex = Val(TB(0)) -1
    Et de un, tu initialise ton Combo et de deux, s'il y a une erreur dans le jour tu peu faire une détection d'erreur.
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraire mois et année à partir d'une date
    Par jikharti dans le forum QlikView
    Réponses: 1
    Dernier message: 10/01/2014, 12h13
  2. [2008R2] Afficher moi et année à partir d'une date
    Par miniil dans le forum Développement
    Réponses: 1
    Dernier message: 17/06/2013, 15h56
  3. récuperer l'année à partir d'une date donnée
    Par Hasnaa25 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/03/2009, 10h38
  4. Grouper sur mois et année (seulement) d'une date
    Par Claythest dans le forum Langage SQL
    Réponses: 4
    Dernier message: 22/03/2007, 12h28
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo