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 :

Changement du format de la date [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 420
    Par défaut Changement du format de la date
    Bonjour a tous,

    Je suis confronté à un problème avec le format de la date.
    J'ouvre un fichier texte séparé par des tabulations à l'aide d'une macro. Lorsque le fichier TXT s'ouvre sous excel la date qui est à l'origine sous le format jj/mm/aa devient mm/jj/aa.
    Comment faire pour que le format de la date lors de l'importation des données issue du fichier TXT reste normal (c-à-d jj/mm/aa)

    Merci pour votre aide

  2. #2
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Tu l'ouvres comment ton fichier ?

    Je dirais qu'il suffit de changer la mise en forme de tes cellules, mais ça dépend de comment tu charges tes données. Peux-tu donner plus de précisions ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 420
    Par défaut
    Bonjour,

    Voila un extrait du fichier texte celui que j'ai a faire digérer avec la macro

    P	08/11/2011	159804	73385
    P	08/11/2011	159811	68875
    P	08/11/2011	159811	68875
    Le format des cellules pour la date est bien du type Date avec les bon paramètres régionnaux Français(France)
    C'est la même chose dans le classeur Excel qui comporte la macro même paramétrage que ci-dessus.

    Voila ce que j'ai en sortie après exécution de la macro
    11/08/11	159804	73385
    11/08/11	159811	68875
    Pour remplir le fichier excel qui part chez mes clients je me base sur la première colonne en fonction de la lettre que je trouve, j'affecte les valeur que j'ai correspondant à la ligne sur une feuille du classeur.
    par cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Count) = sdate
    sdate correspondant à la date
    Count au N° de la ligne qui est en cours de remplissage

    Quand je fait du pas à pas sdate est sous le bon format soit dans mon exemple 08/11/2011

    J'espère avoir été assez explicite dans mes détails pour que tu puisse me donner un coup de main et si besoin est j'essayerai d'apporter un peu plus d'info.

    Merci par avance pour ton aide c'est sympa car là je suis dans le brouillard le plus complet.

  4. #4
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    C'est toujours compliqué les dates avec les différentes conventions existantes.

    Première étape, vérifier que c'est la bonne date que tu récupères. Même si tu vois 8/11/2011 en mode pas à pas, ça va dépendre de la configuration de ton PC. Le mieux est de mettre en espion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Day(sdate)
    Month(sdate)
    Tu peux aussi faire des tests avec un jour du mois supérieur à 12 pour voir (Excel est parfois plus malin qu'on ne le pense, il peut prendre par défaut le premier nombre comme mois, mais basculer sur le deuxième si ça donne un mois qui n'existe pas). Après, si tu ne maîtrises pas le format de dates sur les postes clients, le mieux c'est sans doute de parser le texte pour le gérer à ta sauce (en utilisant inStr de "/")

    Deuxième étape. Si tu es sûr que tu récupères la date que tu veux, quand tu la mets dans la cellule, utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Count).Value = sdate
    Et pour le format des cellules, fais plutôt un format personnalisé "dd/mm/yyyy", comme ça ça ne dépendra pas du poste. Tu peux aussi le faire directement dans la macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & Count).NumberFormat = "dd/mm/yyyy"

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 420
    Par défaut
    Re,
    Alors pour les valeurs de Day(sdate) et Month(sdate) effectivement j'ai une inversion a ce niveau déjà
    Après un niveau du fichier d'export pour le logiciel a partir duquel il est générer pour lui c'est bien la bonne date.

    Sinon pour ce que tu me dit avec InStr je connais pas cette fonction, je vais tenté de trouver des infos dessus

  6. #6
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Quand tu remplis sDate, c'est après un Split ?
    La question de Djohn m'a mis un doute, le fichier texte, tu l'ouvres directement sous excel ou c'est dans ta macro que tu fais un
    Je t'envoie un exemple d'utilisation de InStr

    Donc pour décortiquer toi-même ta date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim dtStr As String
    dtStr = "08/11/2001"
     
    Dim firstSlash As Byte
    Dim secondSlash As Byte
     
    firstSlash = InStr(dtStr, "/")
    secondSlash = InStr(firstSlash + 1, dtStr, "/")
     
    Dim jour As Byte
    Dim mois As Byte
    Dim annee As Integer
     
    jour = Mid(dtStr, 1, firstSlash - 1)
    mois = Mid(dtStr, firstSlash + 1, secondSlash - firstSlash - 1)
    annee = Mid(dtStr, secondSlash + 1, Len(dtStr) - secondSlash)
     
    Dim dateReelle As Date
    daterelle = DateSerial(annee, mois, jour)

    ou plus simple si tu es sûr qu'il y a toujours 2 chiffres pour tes jours/mois et 4 chiffres pour tes années :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim dtStr As String
    dtStr = "08/11/2001"
     
    Dim jour As Byte
    Dim mois As Byte
    Dim annee As Integer
     
    jour = Mid(dtStr, 1, 2)
    mois = Mid(dtStr, 4, 2)
    annee = Mid(dtStr, 7, 4)
     
    Dim dateReelle As Date
    daterelle = DateSerial(annee, mois, jour)

  7. #7
    Membre éclairé Avatar de Djohn
    Profil pro
    Inscrit en
    Février 2007
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 309
    Par défaut
    Citation Envoyé par stefano Voir le message
    ... Lorsque le fichier TXT s'ouvre sous excel ...
    Bonjour, eventuellement peux tu ouvrir le fichier en csv en conservant les tabulations, puis utiliser les fonctions Right et Left ou Mid pour récupérer la date ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim sdate As Date
    sdate = Mid(Range("A" & Count), 2, 11)

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

Discussions similaires

  1. Changement du format d'une date
    Par Novice_vba dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 08/08/2013, 09h29
  2. changement du format de la date sous mysql
    Par sws2008 dans le forum Débuter
    Réponses: 4
    Dernier message: 25/02/2009, 11h30
  3. changement de format de date
    Par yukonima dans le forum Shell et commandes GNU
    Réponses: 15
    Dernier message: 21/06/2008, 13h16
  4. Changement du format d'affichage des dates
    Par tchoimars dans le forum Sql Developer
    Réponses: 2
    Dernier message: 05/07/2007, 15h09
  5. Réponses: 6
    Dernier message: 21/06/2007, 15h26

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