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

WinDev Discussion :

Colonne date prends pas l'année


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut Colonne date prends pas l'année
    Hello tous et toutes, j'espère que vous assez de bonnes fêtes (sans virus..)

    J'insère des données d'un fichier Excel dans mon fichier client, tout va bien sauf ma colonne Date qui m'affiche toutes les dates au format 13/12/____. Pourtant la colonne est format saisie Date avec masque dd/mm/yyyy.

    Coté Excel la colonne est bien formatée Date dd/mm/yyyy et contient bien des dates genre 12/12/2020... donc je dis ..Why ?!

    Merci pour vos lumières.

    Nom : date bug.png
Affichages : 391
Taille : 3,9 Ko

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Tu dis des choses, mais tu en caches beaucoup.
    Si je vois bien, une date qui était 13 décembre 2020 devient 12 décembre sans précision d'année. (ou 12 décembre qui devient 13 ...)

    Les dates sont en faits des entiers : une date D, c'est un nombre de jour entre le jour n°0 et la date D.
    Et selon les outils, le jour n°0, c'est le 1er Janvier 1900 ou le 31 décembre 1799.
    Un siècle et un jour d'écart ... ou quelque chose comme ça.

    Tout ça, ça doit plus ou moins expliquer le jour d'écart...

    Qu'est-ce qu'il faut changer à ton traitement pour résoudre le problème ? Je n'en sais rien, vu que je ne sais pas du tout comment tu fais pour copier tes données d'Excel vers Windev.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    tbc92 merci pour ton retour.
    aucune volonté de "cacher" quoi que ce soit... peut être trop concis surement..

    Les dates citées sont des exemples, le 12 ou 13 peu importe, mon problème est que l'année qui n'est pas pris en compte.

    Si je n'est pas été assez claire : j'importe une date 12/12/2020 et j'obtiens 12/12/____ alors que j'ai des colonnes qui me semble formatées correctement, je rappelle : format date et masque dd/mm/yyyy coté excel et windev.

    Comment j'importe mon excel ? A mon avis ça pas de rapport, mais voilà le code :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    //Importation de la liste des clients
    IdFichierXLS est un entier
    FichierExcel est une chaîne
    i,NbLigne,nNbColonne est un entier
    FichierExcel=SAI_AdresseFichierExcel
     
    SI fFichierExiste(FichierExcel) ALORS
        //HCréation(Client)
        IdFichierXLS = xlsOuvre(FichierExcel)
     
        SI ErreurDétectée() ALORS
            //Erreur(ErreurInfo())
            xlsFerme(FichierExcel)
            RETOUR
        FIN
     
        NbLigne=xlsNbLigne(IdFichierXLS)
        HOuvre(Client)
        POUR i=2 À NbLigne
            SI IdFichierXLS <> -1 ALORS
     
                Client.Nom = xlsDonnée (IdFichierXLS,i,1,Faux)
                Client.Prénom = xlsDonnée (IdFichierXLS,i,2,Faux)
                Client.NomEnfant = xlsDonnée (IdFichierXLS,i,5,Faux)
                Client.AgeClient = xlsDonnée (IdFichierXLS,i,3,Faux)
                Client.Mobile = xlsDonnée (IdFichierXLS,i,10,Faux)
                Client.Adresse = xlsDonnée (IdFichierXLS,i,7,Faux)
                Client.CodePostal = xlsDonnée (IdFichierXLS,i,8,Faux)
                Client.Ville = xlsDonnée (IdFichierXLS,i,9,Faux)
                Client.Commentaires = xlsDonnée (IdFichierXLS,i,12,Faux)
                Client.Date = xlsDonnée (IdFichierXLS,i,13,Faux)
                Client.Email = xlsDonnée (IdFichierXLS,i,11,Faux)
                Client.Etat = "1" // n'existe pas dans l'excel
                Client.Genre = xlsDonnée (IdFichierXLS,i,4,Faux)
                Client.IDMNS = xlsDonnée (IdFichierXLS,i,14,Faux)
                Client.IDTypecours = xlsDonnée (IdFichierXLS,i,6,Faux)    
     
                HAjoute(Client)
            FIN    
        FIN    
        TableAffiche(TABLE_Client,taDébut)
    SINON
        Erreur("Le fichier Excel n'existe pas")
    FIN

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    je rappelle : format date et masque dd/mm/yyyy coté excel et windev.
    Coté Windev ... peu importe a priori.

    Ici, tu insères des données dans le fichier Client (hajoute) , puis tu affiches ce fichier client (tableaffiche).
    Pour chercher où ça bogue, tu peux visualiser ton fichier client (avec WDMap). Soit les données sont correctement chargées dans ce fichier client, soit elles ne sont pas correctement chargées. Et selon le cas, il faudra chercher ce qui ne va pas.

    Je pense que le fichier client n'est pas bon. Et je pense que ce n'est pas uniquement un problème sur l'année. (même si l'histoire de mon premier message est de moins en moins plausible).

    Dans ton code, fais ces changements :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    //Importation de la liste des clients
    sch est une chaine
    IdFichierXLS est un entier
    FichierExcel est une chaîne
    i,NbLigne,nNbColonne est un entier
    FichierExcel=SAI_AdresseFichierExcel
     
    SI fFichierExiste(FichierExcel) ALORS
        //HCréation(Client)
        IdFichierXLS = xlsOuvre(FichierExcel)
     
        SI ErreurDétectée() ALORS
            //Erreur(ErreurInfo())
            xlsFerme(FichierExcel)
            RETOUR
        FIN
     
        NbLigne=xlsNbLigne(IdFichierXLS)
        HOuvre(Client)
        POUR i=2 À NbLigne
            SI IdFichierXLS <> -1 ALORS
     
                Client.Nom = xlsDonnée (IdFichierXLS,i,1,Faux)
                Client.Prénom = xlsDonnée (IdFichierXLS,i,2,Faux)
                Client.NomEnfant = xlsDonnée (IdFichierXLS,i,5,Faux)
                Client.AgeClient = xlsDonnée (IdFichierXLS,i,3,Faux)
                Client.Mobile = xlsDonnée (IdFichierXLS,i,10,Faux)
                Client.Adresse = xlsDonnée (IdFichierXLS,i,7,Faux)
                Client.CodePostal = xlsDonnée (IdFichierXLS,i,8,Faux)
                Client.Ville = xlsDonnée (IdFichierXLS,i,9,Faux)
                Client.Commentaires = xlsDonnée (IdFichierXLS,i,12,Faux)
                sch = xlsDonnée (IdFichierXLS,i,13,Faux)
                trace ( sch)
                Client.Date = xlsDonnée (IdFichierXLS,i,13,Faux)
                Client.Email = xlsDonnée (IdFichierXLS,i,11,Faux)
                Client.Etat = "1" // n'existe pas dans l'excel
                Client.Genre = xlsDonnée (IdFichierXLS,i,4,Faux)
                Client.IDMNS = xlsDonnée (IdFichierXLS,i,14,Faux)
                Client.IDTypecours = xlsDonnée (IdFichierXLS,i,6,Faux)    
     
                HAjoute(Client)
            FIN    
        FIN    
        TableAffiche(TABLE_Client,taDébut)
    SINON
        Erreur("Le fichier Excel n'existe pas")
    FIN
    Ca ne résoudra pas le problème, mais ça aidera à diagnostiquer.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Points : 162
    Points
    162
    Par défaut
    Hello

    Une date côté windev est stockée sous la forme AAAAMMJJ donc essaye de convertir la date Excel dans ce format (ChaineVersDate etc...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.Date = ChaîneVersDate(xlsDonnée (IdFichierXLS,i,13,Faux),"JJ/MM/AAAA")

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 054
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 054
    Points : 9 394
    Points
    9 394
    Par défaut
    Pour compléter, la doc de xlsdonnee() dit qu'on récupère une chaine de type 'jj/mm/aaaa' quand le fichier Excel contient une date.

    Et si on fait client.date="31/12/2020", ça se passe mal. Il faut faire client.date = "20201231" ou encore : client.date = chaineversdate("31/12/2020","MM/JJ/AAAA")
    Ou, appliqué à ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.date =  chaineversdate( xlsDonnée (IdFichierXLS,i,13,Faux)  ,"JJ/MM/AAAA")
    En tout cas, c'est ce que j'essaierais au vu de ce que dit la doc.

    Le trace() que je proposais dans le message précédent, c'est pour vérifier qu'on récupère bien un truc de la forme "31/12/2020".
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 266
    Points
    5 266
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Comment as tu converti ton fichier XL.
    Via HImporteXLS ou par lecture séquentielle ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 67
    Points : 62
    Points
    62
    Par défaut
    Merci à tous,
    en effet comico et tbc92, fallait juste convertir avec un chaine vers date et ça roule niquel.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    client.date =  chaineversdate( xlsDonnée (IdFichierXLS,i,13,Faux)  ,"JJ/MM/AAAA") => niquel
    Merci à vous !!

  9. #9
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 808
    Points : 5 266
    Points
    5 266
    Billets dans le blog
    1
    Par défaut
    L'utilisation de HimporteXLS
    1-Convertit directement le format date XL (quel qu'il soit) en AAAAMMJJ
    2-Fait un INSERT global comme préconisé par CODD
    ...
    3-Ne nécessite qu'une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    HImporteXLS(Client,sFichierExcel,1,"",hImpIgnorePremièreLigne)
    Remarque
    En ce qui concerne la colonne de ta table qui n'a pas d'aquivalent dans ton classeur, il faut mettre sa valeur par défaut à 1
    Le code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HImporteXLS(Client,sFichierExcel,1,"",hImpIgnorePremièreLigne+hValDéfaut)
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/01/2018, 22h40
  2. [XL-2010] Somme qui ne prend pas les colonnes masqués
    Par RodKAZ dans le forum Excel
    Réponses: 1
    Dernier message: 05/03/2013, 15h27
  3. Code extraction colonnes ne prend pas en compte les MFC
    Par argaz01 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/07/2010, 10h13
  4. [DATEDIFF] Ne prend pas en compte les "dates incluse".
    Par GarsDuCalvados dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/06/2008, 15h47
  5. rangevalidator (date): prend mm/dd/year et pas dd/mm/year
    Par cortex024 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 21/03/2007, 12h13

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