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 :

Excel inverse certaines dates


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut Excel inverse certaines dates
    Bonjour,

    Une belle curiosité dont j'aimerais connaitre la cause et la solution :

    J'ai une base de donnée Access contenant un champ Date.
    Comme ce champ ne sert qu'à faire de l'affichage, je l'ai mis au format texte par facilité.

    J'ai une fonction qui exporte certains champs de la table dont cette date.

    J'extrais via une boucle sur chaque ligne du datagridview représentant la table complète et en sélectionnant simplement les 3 champs que je veux exporter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
                Dim pos2 As Integer = 1
                For j = 0 To DataGridView1.RowCount - 1
                    PGB_Export.Value = j + 1
                    If DataGridView1.Rows(j).Cells(10).Value = False And DataGridView1.Rows(j).Cells(4).Value = "Complete" Then
                        pos2 = pos2 + 1
                        xlapp.Sheets(2).cells(pos2, 1).value = DataGridView1.Rows(j).Cells(1).Value 'Numéro de référence
                        xlapp.Sheets(2).cells(pos2, 2).value = DataGridView1.Rows(j).Cells(8).Value 'Date de facturation
                        xlapp.Sheets(2).cells(pos2, 3).value = DataGridView1.Rows(j).Cells(15).Value 'Niveau de facture
                    End If
                Next
    Quand j'ouvre Excel... je vois bien tous mes champs... mais....
    Les dates qui ont un jour inférieur à 12 ont leur format inversé dans Excel.

    Par exemple :
    J'exporte 20/03/2019, Excel intègre 20/03/2019
    J'exporte 02/03/2019, Excel intègre 03/02/2019

    Je ne sais pas d'où ça vient.
    J'ai mis un messagebox contenant la date au moment de l'export pour voir si c'était à ce niveau mais ce n'est pas là, il me répond la date dans le bon ordre.

    J'ai pensé que c'était lié au paramètres régionaux (l'appli est développée et tourne sur une serveur 2012 R2) mais j'ai le même soucis sur mon windows 7 en français...

    Donc, si quelqu'un sait comment régler ça je suis bien curieux de savoir

  2. #2
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Les dates dans Excel, ce n'est pas toujours une sinécure. En partant, dans Excel, une date c'est un nombre. Le nombre 1 signifiant 1er janvier 1900 (Windows) ou le 1er janvier 1904 (Mac). Quand Excel trouve une date en texte, il la convertit en nombre en se basant sur le format américain.

    Tu devrais trouver des tuyaux par là

    ou là

    ou là

    Mais moi, j'aime bien DateSerial()

  3. #3
    Invité
    Invité(e)
    Par défaut
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xlapp.Sheets(2).cells(pos2, 2).value = DataGridView1.Rows(j).Cells(8).Value.tostring("yyyy-mm-dd") 'Date de facturation

  4. #4
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     xlapp.Sheets(2).cells(pos2, 2).value = DataGridView1.Rows(j).Cells(8).Value.tostring("yyyy-mm-dd") 'Date de facturation
    marche pas

    "Value type string cannot be converted to integer" :o

  5. #5
    Invité
    Invité(e)
    Par défaut
    moi c'est comme ça que je fais!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim e As Exception
    Try : xlapp.Sheets(2).cells(pos2, 2).value =Date.Parse(DataGridView1.Rows(j).Cells(8).Value).ToString("yyyy-MM-dd")  : Catch e : End Try
    Nom : Sans titre.png
Affichages : 242
Taille : 2,7 Ko

  6. #6
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    haaaa là ça marche
    Par contre c'est drole... tu forces le format yyyy-mm-dd et Excel le prends comme dd/mm/yyyy....

    Mais au moins c'est dans le bon ordre !

    Tu sais me donner un petit mot d'explication pour ma culture personnelle ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    en fait Excel s’évertue à te simplifier la vie même si ça te fiche la grouille!

    pour t'en convaincre saisie dans Excel 1/1/1 même si c'est bien ce que tu veux écrire!


    yyyy-MM-dd c'est la date au format internationale.

    c'est une incompatibilité culturel entre .net {Américain "mm/dd/YYYY"} et Excel {Culture Régional "dd/mm/yyyy"}

  8. #8
    Membre expérimenté
    Homme Profil pro
    IT Manager
    Inscrit en
    Janvier 2018
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Manager
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2018
    Messages : 220
    Par défaut
    Ok...
    ce qui est drôle c'est que les dates qui seraient aberrantes il les laisse comme ça....
    Enfin, c'est comme partout... les dates, c'est toujours la merde :p

    Merci pour ton aide en tout cas.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/11/2007, 14h49
  2. Excel : Demander une date puis lancer une macro
    Par repié dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 21/12/2005, 16h55
  3. [VBA Excel] convertir une date francaise au format anglais
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/12/2005, 16h52
  4. [JSP] inverser une date
    Par logica dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 12/05/2005, 15h20
  5. Ne prendre que les infos avant une certaine date??
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/07/2003, 10h20

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