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

VB.NET Discussion :

VB.net date excel


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 478
    Points : 442
    Points
    442
    Par défaut VB.net date excel
    Bonjour à tous et à toutes,
    Je recherche la solution à un soucis.
    J'ai un petit boulot dont le fonctionnement est assez simple récuperer 2 fichiers excel.
    Faire une moulinette de comparaison et de mettre en rouge des cellules et enregistrer sous un nouveau nom.
    Dans la globalité pas de soucis sauf les DATES.
    J'ai décides de faire une petite appli externe pour des raisons évidentes de manque de connaissances d'excel par mes chers confrères.
    une petite appli 2/3 bouton la moulinette tourne et ressort un fichier excel tout frais.
    Voici le soucis que j'ai avec les dates c'est toujours et le sempiternel transfo Eur/US automatique au langage VB.
    Une partie est reconnue sous le format mm/dd/yy (US) alors qu'elle est au format date dans excel JJ/mm/yyyy(*05/02/2016) pour l'exemple de format. Et bien sur celle qui ne peut être comprise au format US ( c'est à dire les 2 premiers caractères >12 restent tels quels )
    Le simple fait d'enregistrer le fichier saveas il m'a bousillé toutes les dates.
    A) peut on paramétrer l'environnement dans visual studio 2015 pour lui dire qu on bosse en France et donc de garder les formats de dates?
    B) Si une personne a déjà rencontrer ce soucis et je pense que ça doit être le cas à une solution sinon je pense que je vais devoir faire un sous prog qui décompose le problème string remettre dans l'ordre etc... un vrai m...
    Merc id'avance pour votre attention à mon sujet

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Bonjour,

    Travailles-tu sur un fichier existant (qui tu complète et réenregistre) ou inities-tu un nouveau fichier?

    Si tu es dans le cas d'un fichier existant, le plus simple, à mon sens, est de formater la case cible de la date en "Text" et d'y insérer dont DateTime.ToString(format)

    S'il s'agit d'un nouveau fichier, regardes du côté du context manager.

  3. #3
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 478
    Points : 442
    Points
    442
    Par défaut
    Merci de ta réponse ,
    En fait je récupère 2 fichiers pour en générer 2 nouveaux.
    Un des fichiers provient d'un client et l'autre est une extraction d'une BDD via un logiciel de gestion interne.
    JE fais mes modifs/ comparaison etc.. dans les fichiers ensuite je fais un saveAS pour ne pas écraser les originaux.
    JE vois qu'il y a un soucis car des cellules ou j'accede quand lecture ont changé de format apres le saveAS en fait les dates uniquement.
    Toutes les dates compréhensibles en version US sont transformés simplement car j'ai accéder a un moment en lecture pour faire une recherche.
    Compréhensible en US si la date est 05/02/2016 elle sera apres enregistrement 02/05/2016 et la date 13/02/2016 reste tel quel vu qu'il n'y a pas 13 eme mois dans une année.
    Dans le fichier excel d'origine je vois bien que les dates sont formatés en francais *JJ/mm/yy cette petite étoile dans le format je me demande si il ne comprends pas autres chose qu'une date??

    Merci

  4. #4
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par Ashireon Voir le message
    Merci de ta réponse ,
    En fait je récupère 2 fichiers pour en générer 2 nouveaux.
    Un des fichiers provient d'un client et l'autre est une extraction d'une BDD via un logiciel de gestion interne.
    Ok, tu n'as donc, à priori, pas la main sur le format de la cellule?

    Citation Envoyé par Ashireon Voir le message
    JE vois qu'il y a un soucis car des cellules ou j'accede quand lecture ont changé de format apres le saveAS en fait les dates uniquement.
    Toutes les dates compréhensibles en version US sont transformés simplement car j'ai accéder a un moment en lecture pour faire une recherche.
    Compréhensible en US si la date est 05/02/2016 elle sera apres enregistrement 02/05/2016 et la date 13/02/2016 reste tel quel vu qu'il n'y a pas 13 eme mois dans une année.
    Dans le fichier excel d'origine je vois bien que les dates sont formatés en francais *JJ/mm/yy cette petite étoile dans le format je me demande si il ne comprends pas autres chose qu'une date??
    Si je ne me trompe pas, Excel va "transformer" les dates qu'il reçoit en fonction de son contexte à lui. C'est à dire que tu n'aura pas le même résultat que tu sois sur un Excel US ou un Excel Fr. Et ce, même si tu formate ta valeur préalablement dans ton code. J'ai eu cas il y a peu : je formatais ma valeur de la façon suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheet.Cells(10, 2) = Now.Day & "/" & Now.Month & "/" & Now.Year  '
    Le problème c'est que mon résultat différait. Il s'agit en fait d'une passe d'Excel qui identifie un champ date et le formate à nouveau suivant son contexte. Il te faudrait donc pouvoir forcer la cellule au format texte, ou forcer le document Excel au contexte de ton application.

  5. #5
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par Ashireon Voir le message
    Merci de ta réponse ,

    Dans le fichier excel d'origine je vois bien que les dates sont formatés en francais *JJ/mm/yy cette petite étoile dans le format je me demande si il ne comprends pas autres chose qu'une date??

    Merci
    L'étoile, signifie que l'affichage de la date découle directement des paramètres régionaux de l'ordinateur. Ce qui veut dire que chez-moi, avec le format canadien "officiel" ce serait aaaa-mm-jr. C'est d'ailleurs le format ISO.

    Habituellement, Excel se débrouille bien avec les dates et les paramètres régionaux si la date est "traitée" avec la fonction VB-VBA Cdate(date). Généralement, une date reconnue comme une date "convertie" en date s'affiche conformément aux paramètres régionaux dans Excel. (Si tu pilotes Excel avec les "bibliothèques Interop", tu pourrais ajouter un Cdate à ton code en adaptant pour les noms d'objets.)

    Au pire, la Fonction VB6-VBA DateSerial(aaaa,mm,jj) permet de retrouver le numéro de la date dans Excel (le numéro 1 (peut-être 0) étant le 1er janvier 1900). En passant par là, Excel est supposé d'afficher la bonne dat.

    DateSerial, fonction, exemple
    Cet exemple utilise la fonction DateSerial pour renvoyer la date correspondant au jour, au mois et à l'année indiqués.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Exemple microsoftien, provenant de l'aide de VBA Excel
    Dim MyDate
    ' MyDate contient la date correspondant au 12 février 1969.
    MyDate = DateSerial(1969, 2, 12)    ' Renvoie une date.
    C'est à adapter pour VB.net, mais les dates dans Excel et VBA ont fait l'objet de cet article.

    http://didier-gonard.developpez.com/...-excel-et-vba/
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  6. #6
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 478
    Points : 442
    Points
    442
    Par défaut
    Bonjour,
    Et merci de vos réponses et aides. Je vais lire ton article.
    Ce que je ne comprends pas c'est que le 05/02/2016 par exemple quand je lis la variable date dans laquelle je récupère la date est au 05/02/2016 au lieu 02/05/2016 format US mais pas le 13/02/2016 qui lui reste tel quel. existe bien vu que le mois est en premier.
    Car sinon ça serait assez facile de tous retranscrire comme il se doit. Je vais essayer de récupère la valeur du numéro de jour et voir ce qu'il comprends vraiment.

    Merci

  7. #7
    Membre averti
    Homme Profil pro
    Responsable Maintenance
    Inscrit en
    Août 2012
    Messages
    478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Responsable Maintenance

    Informations forums :
    Inscription : Août 2012
    Messages : 478
    Points : 442
    Points
    442
    Par défaut
    Bon j'ai du bidouiller un code pour m'en sortir qui fonctionne.
    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
        Public Function CalcDate(datestr As String) As Date
            Dim JourStr As String
     
            Dim jour As Long
            Dim mois As Long
            Dim An As Long
     
            ' retrouver le jour selon le format
            JourStr = Left(datestr, 2)
            If CLng(JourStr) < 13 Then
                ' Alors la chaine de date est de forme mois/jour/an
                mois = CLng(JourStr)
                jour = CLng(Mid(datestr, 4, 2))
                An = CLng(Mid(datestr, 7, 4))
            Else
                ' Sinon le format est Jour/Mois/An
                jour = CLng(JourStr)
                mois = CLng(Mid(datestr, 4, 2))
                An = CLng(Mid(datestr, 7, 4))
     
            End If
     
            CalcDate = DateSerial(An, mois, jour)
        End Function
    Sinon ben ca me lisait pas correctement le fichier ou c'est peut être le fait que les personnes n'ont pas correctement formater leur données.
    Je mets en resolu
    ++

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

Discussions similaires

  1. Date Excel vs date VB.net
    Par Kanetsugu dans le forum VB.NET
    Réponses: 0
    Dernier message: 12/03/2012, 11h48
  2. [VB.NET] export excel et librairie Microsoft excel 11
    Par HULK dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/02/2006, 15h54
  3. [VB.Net] - Acces à Excel depuis VB.Net
    Par toninonino dans le forum Windows Forms
    Réponses: 14
    Dernier message: 30/09/2005, 12h12
  4. [VB.NET] DataGrid, Excel et encodage
    Par franculo_caoulene dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/10/2004, 16h11
  5. [VB.NET] Fichier Excel vérouillé avec mot de passe
    Par rafano dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/06/2004, 15h36

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