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 :

Utilisation fonction format pour date dans une variable string [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut Utilisation fonction format pour date dans une variable string
    Bonjour,

    Je récupère une date saisie dans un formulaire que j'ai créé. Cette date est stockée dans dim sDate as string. Elle contient "20181010".
    J'ai besoin de la placer dans une autre variable string mais sous une autre forme. J'ai un message d'erreur "dépassement de capacité". Ma ligne de format est :
    sDateModif = format(sDate, "dd.mm.yyyy").
    J'ai effectué le test suivant sDateModif = format("20181010", "dd.mm.yyyy") et j'ai le même résultat.
    L'espion de ma ligne me dit que le format de sortie de format(sDate, "dd.mm.yyyy") est un variant/integer.

    Je ne comprends pas pourquoi. Et comment peut-on changer le format d'une date dans une variable string?

    Merci d'avance.

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    SDate n'étant pas une VRAIE date mais une chaine de caractères, la fonction Format() ne pourra pas fonctionner.
    Il faudrait transformer SDate en vraie date en utilisant la fonction Date() renseignée par des portions de SDate.

    Mais comme (à priori), ton but est de transformer une chaine de caractères en une autre chaine de caractères, autant rester basique et traiter ça pour ce que c'est.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sDateModif = Right(sDate, 2) & "." & Mid(sDate, 5, 2) & "." & Left(sDate, 4)

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut
    Bonjour Menhir,

    Je vais peut-être utiliser ceci. Mais au cas où mon besoin se trouverai modifié, comment dois-je convertir ma donnée? Il me semble avoir essayé ceci sans succès : sDateModif = format(Date(sDate), "dd.mm.yyyy").

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par StefLedoc Voir le message
    Je vais peut-être utiliser ceci. Mais au cas où mon besoin se trouverai modifié, comment dois-je convertir ma donnée? Il me semble avoir essayé ceci sans succès : sDateModif = format(Date(sDate), "dd.mm.yyyy").
    J'ai confondu Excel et VBA. En VBA, ce n'est pas Date() qu'il faut utiliser mais DateSerial(). https://docs.microsoft.com/fr-fr/off...erial-function
    Mais pour l'utiliser, tu seras, de toutes façon, obligé de décomposer ta chaine de caractère comme je l'ai fait dans le code que j'ai donné.
    Donc, ça ne sera que plus compliqué sans présenter de réel intérêt.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sDateModif = format(cdate(format("20181010","@@@@-@@-@@")), "dd.mm.yyyy")

  6. #6
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sDateModif = format(cdate(format("20181010","@@@@-@@-@@")), "dd.mm.yyyy")
    Je ne maitrise pas le symbole "@" pourrais-tu me l'expliquer ?

    Je connais "#", "0", " "et """

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Je ne maitrise pas le symbole "@" pourrais-tu me l'expliquer ?
    Je connais "#", "0", " "et """
    Toutes les explications (et plein d'autres) ici : https://docs.microsoft.com/fr-fr/off...r-applications
    Regarde en particulier la chapitre "User-defined string formats".

  8. #8
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 274
    Par défaut
    Menhir vous a donné la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sDateModif = Format(DateSerial(Left(txtDates, 4), Mid(txtDates, 5, 2), Right(txtDates, 2)), "dd.mm.yyyy")

  9. #9
    Invité
    Invité(e)
    Par défaut
    Nom : Test.gif
Affichages : 1698
Taille : 74,6 Ko

    @=caractère

    les date au format international =>YYYY-MM-DD => @@@@-@@-@@ => 2018-10-10
    Dernière modification par Invité ; 11/10/2018 à 14h45.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 24
    Par défaut Merci à tous !
    Avec vos différentes solutions je suis sûr de m'en sortir maintenant. Encore merci pour votre réactivité !

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

Discussions similaires

  1. [POO] Appeler une fonction par son nom dans une variable
    Par whitespirit dans le forum Langage
    Réponses: 16
    Dernier message: 18/06/2008, 11h23
  2. Réponses: 6
    Dernier message: 19/05/2008, 15h39
  3. Probléme pour remplacer = dans une variable
    Par koKoTis dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 05/06/2007, 13h37
  4. [SQL INTERBASE] format de date dans une requete sql
    Par arnolpourri dans le forum InterBase
    Réponses: 5
    Dernier message: 03/07/2006, 11h42
  5. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12

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