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 :

[VBA-E]Problème de date lors d'importation


Sujet :

Macros et VBA Excel

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut [VBA-E]Problème de date lors d'importation
    Bonjour,

    j'ai un petit soucis avec une importation
    En fait, j'ai donc un fichier texte, sorti d'un autre logiciel, dont le séparateur est un pipe ("|") et je voudrais le transférer sous Excel, sachant qu'il y a une colonne date en format date français.
    Normalement on passe donc par l'assistant d'importation de données, en choisissant un délimiteur "|" et la tout se passe et tout est bien récupéré et la date est bien récupérée.
    On veut automatiser ça et donc passer par une macro pour le faire. On a cette macro sous la main :

    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
    20
    21
    22
    23
    24
    25
    26
    Sub import_text()
    Dim s As String
    s = ActiveWorkbook.Name
    Workbooks.Open "C:\temp" & NameTextFile, Format:=6, delimiter:=Chr(124)
    end sub
     
    Function NameTextFile() As String
    Dim fic As String
    Dim dernier As String
    Dim dt As String
    Dim jour, mois
    jour = Day(Date)
    mois = month(Date)
    If jour < 10 Then jour = 0 & jour
    If mois < 10 Then mois = 0 & mois
    dt = jour & "." & mois
    fic = Dir("C:\temp\*.txt")
    Do Until fic = ""
        If Left$(fic, 5) = dt Then
            dt = Left$(dt, 5)
            dernier = fic
        End If
        fic = Dir
    Loop
    NameTextFile = dernier
    End Function
    Quand je lance cette macro d'importation, tout est bien récupéré sauf les dates. A priori, quand on utilise la macro, les dates sont importées en format américain (quand le jour est supérieur à 12 (par ex. "29/03/2006") ça déconne) du coup, quand par la suite on faut un tri sur la date, le tri est mal fait, du a ce format de date.

    J'aimerai bien savoir comment résoudre ce problème, donc si quelqu'un a une solution, je suis preneur, et je le remercie d'avance

    Si je n'ai pas été assez clair dans mes explications, faites le moi savoir

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Salut,
    j'ai fais cette ptite macros pour corrigée les dates américaines en francaise lors d'une ouverture de fichier au format csv - je me retrouve avec les dates du 01 au 12 du mois au format americain - par contre je ne l'ai pas terminer en ce qui concerne la remise en forme du fichier. Mais cela peu peut-etre te donner une orientation.
    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
    20
    21
    22
    23
    24
    Sub dateamer()
    li1 = ActiveCell.Row
    col1 = ActiveCell.Column
    col2 = Selection.End(xlToRight).Column + 1
     
    Do
    u_date = Cells(li1, col1)
    longu = Len(u_date)
    Cells(li1, col2).Select
    rechcar = "/"
    poscar = InStr(1, u_date, rechcar, 1)
    Cells(li1, col2).Select
     Selection.FormulaR1C1 = Mid(u_date, 1, poscar - 1)
    poscar2 = InStr(poscar + 1, u_date, rechcar, 1)
    Cells(li1, col2 + 1).Select
     Selection.FormulaR1C1 = Mid(u_date, poscar + 1, (poscar2 - 1 - poscar))
    Cells(li1, col2 + 2).Select
     Selection.FormulaR1C1 = Mid(u_date, poscar2 + 1, (longu - poscar2))
    Cells(li1, col2 + 3).Select
    Selection.FormulaR1C1 = "=DATE(LC(-1),LC(-3),LC(-2))"
    li1 = li1 + 1
    controle = Cells(li1, col1)
    Loop While IsEmpty(controle) = False
    End Sub

  3. #3
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Alors, je remet mon blabla habituel:
    en VBA, le format de date, c'est mm/dd/yyyy. Donc quand tu as 02/03/2005, c'est le 3 février. Ensuite, si tu a cru lui donner une date au format français, tu vas avoir des mois supérieur à 12, et sans rien dire, VB va inverser le jour et le mois, et ta liste sera foutue...
    DONC: pour éviter tout problème, moi, j'utilise DateSerial.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim MaDate As Date
    MaDate = DateSerial(2006, 3, 2)
    En faisant ça, dans MaDate, tu as le "2 mars 2006". Ensuite, avec un "Format()", tu le mets au format que tu préfères, mais ta date est juste, tu peux travailler avec.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci de l'info Megaxel, je compte essaye un a moment ou a un autre !!!

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Merci beaucoup a priori ça marche

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

Discussions similaires

  1. Problème de date lors de l'import
    Par didier.M dans le forum Développement
    Réponses: 3
    Dernier message: 03/02/2010, 10h10
  2. [VBA-E] Problème de Date
    Par olivier1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/06/2006, 19h53
  3. [VBA-E]problème de date
    Par plante.douce dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/04/2006, 14h06
  4. [VBA-E]problème de date
    Par plante.douce dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/04/2006, 23h08
  5. [VBA-E]problème de date dans une requete
    Par isa21493 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/02/2006, 11h45

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