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 :

Problème NumberFormat avec un nombre entier Excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut Problème NumberFormat avec un nombre entier Excel
    Bonjour à tous,

    J'espère poster au bon endroit

    Mon programme VB.NET extrait des valeurs dans un fichier excel depuis une BDD. Je souhaiterais formater ma cellule comme ceci : #.###

    Ca fonctionne comme il faut sauf si j'ai un nombre entier. Exemple :


    Nombre sans format : 12.3697987
    Avec format : 12.370


    Nombre sans format : 3
    Nombre avec format : 3.


    Il me rajoute un point si le nombre est entier.

    Est-ce qu'il y a une solution pour eviter ca ?

    Merci d'avance,

    Jah

  2. #2
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    J'ai trouvé un moyen mais je trouve pas ca top. J'ai créé la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub PatternWorksheetNumber(ByRef pWs As ExcelWorksheet)
         Dim i As Integer
         For numbRow As Integer = pWs.Dimension.Start.Row To pWs.Dimension.End.Row
              For numbCol As Integer = pWs.Dimension.Start.Column To pWs.Dimension.End.Column
                   'Si la valeur de cells n'est pas un entier
                   If Not Int32.TryParse(pWs.Cells(numbRow, numbCol).Text.ToString, i) Then
                        pWs.Cells(numbRow, numbCol).Style.Numberformat.Format = "#.###"
                   End If
              Next
         Next
    End Sub
    Est-ce que quelqu’un connait une façon plus simple pour faire ca ?

    Merci d'avance,

    Jah

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonjour,
    vous utilisez la librairie EPPlus si je ne m'abuse, (que je ne connais pas).
    Le chargement de la table visée dans la BDD, se fait ainsi, je suppose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Using pck As New ExcelPackage(newFile)
                Dim ws As ExcelWorksheet = pck.Workbook.Worksheets.Add("Feuil1")
     
                ws.Cells("A1").LoadFromDataTable(table, True, OfficeOpenXml.Table.TableStyles.None)
                ws.Cells(ws.Dimension.Address).AutoFitColumns()
     
                For Each dc As DataColumn In table.Columns
                    ws.Column(dc.Ordinal + 1).Style.Numberformat.Format = GetAutoNumberFormat(dc.DataType)
                Next
     
                pck.Save()
            End Using
    Dans ce cas, pour ma part, je récupèrerais, comme dans le code ci-dessus, le DataType de chaque colonne de la DataTable pour formater les données correspondantes dans la feuille Excel.
    Avec le traitement des formats, comme suit :
    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
        Private Function GetAutoNumberFormat(type As Type) As String
     
            Dim format As String = ""
            Select Case type
                Case GetType(Integer) : format = "0"
                Case GetType(Double) : format = "0.000"
                Case GetType(Single) : format = "0.00"
                Case GetType(Decimal) : format = "0.00 " & Globalization.NumberFormatInfo.CurrentInfo.CurrencySymbol
                Case GetType(DateTime) : format = Globalization.DateTimeFormatInfo.CurrentInfo.ShortDatePattern
                Case GetType(String) : format = "@"
                Case GetType(Boolean) : format = """" & Boolean.TrueString & """;""" & Boolean.TrueString & """;""" & Boolean.FalseString & """"
            End Select
     
            Return format
     
        End Function
    Source.
    A voir...

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 351
    Par défaut
    Je crois que dans ton format d'objet le # présentera un chiffre s'il existe et un 0 présentera obligatoirement un zéro s'il n'y a pas de chiffre.

  5. #5
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 154
    Par défaut
    Merci à vous chrismonoye et Pascal Lob

    Je retiens ta solution chris

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/09/2009, 13h22
  2. Problème mathématique avec les nombres
    Par ramirami dans le forum Langage
    Réponses: 51
    Dernier message: 15/02/2007, 23h07
  3. Problème avec le pilotage d'Excel
    Par dedesite dans le forum C++Builder
    Réponses: 6
    Dernier message: 16/01/2006, 16h38
  4. Problèmes avec des nombres... que faire ?
    Par sducos81 dans le forum C++
    Réponses: 6
    Dernier message: 21/07/2005, 13h46
  5. [VB.NET] Problème avec un OptionButton dans Excel 2003
    Par alfprod dans le forum Windows Forms
    Réponses: 3
    Dernier message: 09/09/2004, 13h40

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