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 :

Format Date Change bizarrement [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut Format Date Change bizarrement
    Bonjour, j'ai un petit souci , j'ai un formulaire qui stocke des données dans ma base , tout se passe bien , toutes les données sont stockées comme saisie , quand je fais un select dans un autre winform tout se passe bien j'affiche les données qui sont dans ma base, mais quand j'exporte les données dans un fichier excel , y'a des dates qui sont sous format MM/JJ/YYYY et d'autres qui sont dans le format normal (le même qui a était saisie ) , je voudrais savoir d'où vient le problème s'il vous plaît.


    Merci d'avance

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,

    Pour vous aider nous devrions voir le code de l'exportation.

  3. #3
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut
    voici le code de l'exportation , ça exporte ce qui est affiché dans le DatagridView:

    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
     
        Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
            Dim App_xls As Object
            Dim Lig_cpt, Col_cpt As Integer
            'Dim chartRange As Microsoft.Office.Interop.Excel.Range
            App_xls = CreateObject("Excel.Application")
            App_xls.workbooks.add()
            App_xls.visible = True
            'chartRange = App_xls.Range("A1", "V1000")
            Try
                For Col_cpt = 0 To DataGridView1.ColumnCount - 1
                    App_xls.ActiveSheet.cells(1, Col_cpt + 1).value = DataGridView1.Columns(Col_cpt).HeaderText
                Next
                For Lig_cpt = 0 To DataGridView1.Rows.Count - 1
                    For Col_cpt = 0 To DataGridView1.ColumnCount - 1
                        If IsNumeric(DataGridView1.Item(Col_cpt, Lig_cpt).Value) Then
                            App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = CDbl(DataGridView1.Item(Col_cpt, Lig_cpt).Value)
                        Else
                            App_xls.ActiveSheet.cells(Lig_cpt + 2, Col_cpt + 1).value = DataGridView1.Item(Col_cpt, Lig_cpt).Value
                        End If
     
                    Next
                Next
            Catch ex As Exception
     
            End Try
     
            ' chartRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous
            ' chartRange.Borders.Weight = Excel.XlBorderWeight.xlThin
            App_xls.Rows.Item(1).Font.Bold = True
            App_xls.Rows.Item(1).HorizontalAlignment = 3
            App_xls.Columns.AutoFit()
            MessageBox.Show("Fichier généré!")
        End Sub

  4. #4
    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,

    Je te dirais que le plus simple à essayer, c'est de mettre ta plage de dates dans Excel au format de date que tu désires avant d'y coller des données. Quand la cellule n'a pas de format défini, Excel se débrouille pour trouver le format qui convient (?). Et, des fois, il se trompe.

    Pour ton format, tu peux enregistrer une macro dans Excel et transférer et adapter les bonnes lignes dans ton code d'origine.

    Sinon, tu peux essayer ta procédure au pas-à-pas et vérifier la donnée qui est envoyée à Excel et le format final affiché pour voir la différence dans les données sources, si jamais il y en a.

    P.S. Pour tous ceux et celles qui doivent travailler avec Excel. Quand l'utilisateur a mis un format, disons personnel, à une cellule d'Excel, ce format a priorité sur tous les autres formats qu'Excel peut vouloir mettre automatiquement.
    À 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.

  5. #5
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut
    Je ne sais pas travailler avec les macros , de plus pourquoi il y a juste quelques dates qui s'affichent comme ça , alors que d'autres sont normales , et que c'est moi qui a saisie les dates de la même façon , c'est ça ce que je ne comprend pas !!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Les dates où tu peux inverser le jour et le mois (donc avant le 12 du mois) peuvent-être inversées.

    Philippe

  7. #7
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut
    voilà exactement , se sont les Dates avant le 12 du mois qui s’inversent , comment faire alors ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    clementmarcotte t'a donné la marche à suivre.

    Philippe

  9. #9
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut
    mais je n'ai pas compris ce qu'il faut faire , a part la partie macro que je ne sais pas même pas comment l'utiliser

  10. #10
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut
    c'est bon j'ai résolu le problème , j'ai changé le type du champ dans ma base en Datetime et j'ai remplacé dans ma requête like par = .

    merci à vous tous quand même .

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    J'appuie fortement les réponses de clementmarcotte et Philippe JOCHMANS.
    Pour ne pas avoir de problème dans un export Excel il est préférable de forcer le format des cellules AVANT l'export des données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    rangeValue = sheet.Range(sheet.Cells(indexY, 1), sheet.Cells(dets.Count + indexY, arrObj.GetLength(1)))
    rangeValue.NumberFormat = "@"
     
    rangeValue = sheet.Range(sheet.Cells(indexY + 1, 5), sheet.Cells(dets.Count + indexY, 6))
    rangeValue.NumberFormat = "dd/mm/yyyy"
    Si vous ne le faites pas, vous aurez des blagues avec certaines type qu'Excel essayera de deviner le type et en modifiera l'affichage.

    Autre petite astuce pour exporter beaucoup de donnée, il faut passer par un tableau, c'est ENORMEMENT plus rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim arrObj(Contracts.Count, 10) As Object
    For i = 0 To dets.Count - 1
        arrObj(i + 1, 0) = dets(i).Code
        arrObj(i + 1, 1) = dets(i).Brand
        ' Etc...
    Next
    rangeValue = sheet.Range(sheet.Cells(1, 1), sheet.Cells(dets.Count, arrObj.GetLength(1)))
    rangeValue.Value = arrObj
    Ce qu'il faut retenir c'est qu'il faut travailler au maximum par range.

  12. #12
    Membre du Club
    Homme Profil pro
    ertertaertar
    Inscrit en
    Mai 2013
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : ertertaertar

    Informations forums :
    Inscription : Mai 2013
    Messages : 314
    Points : 55
    Points
    55
    Par défaut
    d'accord Merci beaucoup

  13. #13
    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 andyajram Voir le message
    mais je n'ai pas compris ce qu'il faut faire , a part la partie macro que je ne sais pas même pas comment l'utiliser
    Que ce soit dans une macro, ou dans un projet VB.net, les Objets d'Excel (Range, sheet, workbook, worksheet etc) ne changent pas. Ce qui change c'est la façon de les appeler, mais la façon de les utiliser ne change pas.

    Ume macro Excel (Word, PowerPoint etc.), c'est une procédure écrite en Visual Basic pour Applications et qui peut être (très) facilement convertie pour être utilisée en VB.net, et, tant qu'à y être, en C#, parce que, de toutes façons, il est question de manipuler les objets Excel qui restent immuables, peu importe le langage .net utilisé.

    L'enregistreur de macros d'Excel, et celui de Word, permettent de créer des procédures VBA (trop lourdes et trop longues et qui peuvent être élaguées) qui peuvent être utilisées comme canevas en VB.net. (Et puis, cela reste un excellent outil pour tout développeur devant utiliser Excel ou Word.
    À 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.

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

Discussions similaires

  1. [XL-2007] Le format de "certaines" dates change après traitement dans une variable tableau.
    Par tostaky76 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/10/2015, 00h54
  2. [XL-2007] format DATE bizarre
    Par philatex dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/02/2011, 09h27
  3. Format(Date) > bizarre bizarre
    Par Tchupacabra dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/01/2008, 14h54
  4. [VBA-E] format date/mois en entier : résultat bizarre
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2006, 15h05
  5. [version 2.2.0.0.0] format date bizarre
    Par shnouf dans le forum Oracle
    Réponses: 5
    Dernier message: 02/02/2006, 14h46

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