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 une date à partir des valeurs de 3 ComboBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut Récupérer une date à partir des valeurs de 3 ComboBox
    Bonjour à tous,

    C'est la première fois que je poste ici, donc je m'excuse par avance si ma demande n'est pas assez claire du premier coup


    Je programme en VBA pour mon école et je bloque sur une procédure que j'essaie de réaliser. Voici l'explication:

    J'ai placé dans un UserForm trois ComboBox faisant chacune référence à une plage de cellules distinctes.
    L'utilisateur devra renseigner:
    - Dans la 1ère: le jour, allant de 1 à 31
    - Dans la 2nd: le mois, écrit en toutes lettres (Janvier, Février, ..., Décembre)
    - Et enfin dans la dernière: l'année, à partir de 2014

    Je voudrais récupérer les valeurs choisies dans ces 3 ComboBox afin d'obtenir une date sous le format : jj/mm/aaaa
    Le problème étant que deux des valeurs sont des nombres, et la dernière du texte, ceci complique la tâche.
    J'aimerais placer cette "concaténation" de caractère dans une case précise de mon classeur, afin de pouvoir l'utiliser pour générer une calendrier débutant à cette même date.

    Est-ce qu'une bonne âme accepterait de m'aider ?

    Je vous remercie d'avance.

  2. #2
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir CH0ubida, bonsoir le forum,

    Essaie comme ça
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim DT As String 'déclare la variable DT (Date en Texte)
    Dim D As Date 'déclare la variable D (Date)
     
    DT = Me.ComboBox1.Value & "/" & Me.ComboBox2.Value & "/" & Me.ComboBox3.Value 'définit la variable DT
    D = Format(DT, "dd/mm/yyyy") 'définit la variable D
    MsgBox D 'affiche la date D

  3. #3
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonsoir,
    Sauf erreur de ma part les données issues de TextBox sont au format String, je suppose qu'il en est de même pour les ComboBox.
    Dans ce cas il faudrait préciser le format désiré pour la variable DT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DT =CDate( Me.ComboBox1.Value & "/" & Me.ComboBox2.Value & "/" & Me.ComboBox3.Value )
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    ne jamais passer une date au format français mais international:

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut
    Bonsoir,

    Merci beaucoup Thautheme pour ta solution. Elle me paraît tout à fait correcte Je n'avais pas pensé à passer par une variable "tampon" en String...

    eric4459, si DT est déjà déclaré en String, je ne comprends pas pourquoi déclarer le format souhaité pour DT. A quoi cela sert de rajouter CDate ? Est-ce que cela évite de passer par la variable D As Date ?

    rdurupt: Si je comprends bien ce que tu dis, il faut que j'écrive:
    D = Format(DT, "yyyy-mm-dd") ? Mais comment faire si je le veux en effet dans le format français, soit D = Format(DT, "dd/mm/yyyy") comme Thautheme l'a suggéré ?

    Je vous remercie de votre aide. Je suis étonnée de la rapidité de vos réponses, ça fait plaisir

  6. #6
    Invité
    Invité(e)
    Par défaut
    ce que j'ai voulue dire c'est que les date dans vba au format string vont être interprété comme des date américaine;
    en d'autre terme tous les 4 de chaque mois ce convertiront en poissons d'avril 04/01, 04/02,04/03 en 01/04,02/04,03/04!

Discussions similaires

  1. creation d'une table à partir des valeurs de 2 tables
    Par esmarlandes dans le forum Macro
    Réponses: 2
    Dernier message: 29/01/2010, 09h55
  2. Récupérer une date à partir d'un format UNIX
    Par Spack dans le forum Programmation et administration système
    Réponses: 8
    Dernier message: 09/02/2009, 14h46
  3. calcul d'une date à partir des données de textbox
    Par jffaber dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2008, 10h24
  4. Creer une date avec des valeurs prédéfinies
    Par baedal dans le forum VB.NET
    Réponses: 4
    Dernier message: 22/05/2007, 10h58
  5. Réponses: 1
    Dernier message: 23/01/2006, 18h53

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