Datagridview et sortie en fichier text sans virgules [Résolu]

autodidacte3 59 Messages postés mardi 21 juillet 2009Date d'inscription 25 décembre 2014 Dernière intervention - 25 mars 2014 à 16:14 - Dernière réponse : autodidacte3 59 Messages postés mardi 21 juillet 2009Date d'inscription 25 décembre 2014 Dernière intervention
- 26 mars 2014 à 18:32
Bonjour,
j'enregistrer mon datagridview en fichier de sortie fIchierEnployes.txt jusque là aucun souci :)
Mon problème c'est que le datagridview comporte six colonne de ma base .mdb la colonne 4 NetaPaye est numérique avec virgule, au cours de l'enregistrement je veux pas de la virgule dans le fichier de sotie exemple :

avec virgule
*0000000026540449712471,21PIERRE BRENT 1
*0000000000786954761255,00RUBEN DRIES 1
*0000000006530476781050,01SANDER THOMAS 1
...
sans virgule
*000000002654044971247121PIERRE BRENT 1
...

mon programme

  Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim numCols As Integer = DataGridView1.ColumnCount
Dim numRows As Integer = DataGridView1.RowCount - 1
Dim strDestinationFile As String = "F:\MesPrg\\fIchierEnployes.txt"
Dim LireTable As TextWriter = New StreamWriter(strDestinationFile)

For count As Integer = 0 To numRows - 1
For count2 As Integer = 1 To numCols - 1
LireTable.Write(DataGridView1.Rows(count).Cells(count2).Value)
If (count2 <> numCols) Then
'ici je cherche a supprimer les virgules
If count2 = 6 Then
LireTable.Write(" ") 'ici je sépare le nom et prenom par un espace
Else
LireTable.Write("")
End If
End If

Next
LireTable.WriteLine()
Next
LireTable.Close()
End Sub

Merci de votre aide.




[ ]
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 25 mars 2014 à 20:53
1
Merci
Bonjour
Pas bien compris
tu veux retirer 1 la virgule du datagridview 4
2 ou écrire la donnée sans virgule

pour 2 essaie



Dim NetaPaye As String
Dim sep As String
sep = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator

Dim listout As New List(Of String)
Dim str As String
For row = 0 To DataGridView1.RowCount - 2
str = DataGridView1.Rows(row).Cells("column1").Value.ToString
str &= DataGridView1.Rows(row).Cells("column2").Value.ToString
str &= DataGridView1.Rows(row).Cells("column3").Value.ToString
NetaPaye = DataGridView1.Rows(row).Cells("column4").Value.ToString
NetaPaye = NetaPaye.Substring(0, NetaPaye.IndexOf(sep)) & NetaPaye.Substring(NetaPaye.IndexOf(sep) + 1)
str &= NetaPaye & DataGridView1.Rows(row).Cells("column5").Value.ToString
str &= " " & DataGridView1.Rows(row).Cells("column6").Value.ToString
listout.Add(str)
Next
IO.File.WriteAllLines(" gftfrtr", listout.ToArray)

Merci cs_ShayW 1

codes-sources a aidé 87155 internautes ce mois-ci

autodidacte3 59 Messages postés mardi 21 juillet 2009Date d'inscription 25 décembre 2014 Dernière intervention - 25 mars 2014 à 22:50
Merci encore à vous cs_ShayW
ça marche avec un tout petit "mais" ,
si les deux chiffres après la virgule "les deux décimales" du NetaPaye est zéro l'erreur suivante s'affiche
" ArgumentOutOfRangeException n'a pas été gérée ". La longueur ne peut pas être inférieure à zéro. Nom du paramètre : length "

A savoir, j'ai ajouté: " Imports System.Collections.Generic " dans l'espace de noms parce que "List(Of String)" type Liste non défini

les nouveaux lignes du code :

       Dim NetaPaye As String
Dim sep As String
sep = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator

Dim numRows As Integer = DataGridView1.RowCount - 1
Dim listout As New List(Of String)
Dim str As String

For numRows = 0 To DataGridView1.RowCount - 2
str = DataGridView1.Rows(numRows).Cells("C1odeFix1").Value.ToString
str = DataGridView1.Rows(numRows).Cells("C2odeFixe2").Value.ToString
str &= DataGridView1.Rows(numRows).Cells("NumCompte1").Value.ToString
str &= DataGridView1.Rows(numRows).Cells("CleNumCompt2e").Value.ToString
NetaPaye = DataGridView1.Rows(numRows).Cells("NetPaie").Value.ToString
NetaPaye = NetaPaye.Substring(0, NetaPaye.IndexOf(sep)) & NetaPaye.Substring(NetaPaye.IndexOf(sep) + 1)
str &= NetaPaye & DataGridView1.Rows(numRows).Cells("NomN").Value.ToString
str &= " " & DataGridView1.Rows(numRows).Cells("PrenomP").Value.ToString
str &= DataGridView1.Rows(numRows).Cells("CodeEnregistrement").Value.ToString
listout.Add(str)
Next
IO.File.WriteAllLines("essai.txt", listout.ToArray)

je vous tire mon chapeau.
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 25 mars 2014 à 23:17
A savoir, j'ai ajouté: " Imports System.Collections.Generic " dans l'espace de noms parce que "List(Of String)" type Liste non défini

pas chez moi
verifie si dans les réferences (project -> properties-> references)
system.collections.generic est coché

si les deux chiffres après la virgule "les deux décimales" du NetaPaye est zéro l'erreur suivante s'affiche
à quelle ligne tu as l'erreur

pourquoi tu dois te servir d'un fichier txt ,la bdd ne suffit pas ?
autodidacte3 59 Messages postés mardi 21 juillet 2009Date d'inscription 25 décembre 2014 Dernière intervention - 25 mars 2014 à 23:53
bonsoir cs_ShayW
L'erreur est à la ligne :
NetaPaye = NetaPaye.Substring(0, NetaPaye.IndexOf(sep)) & NetaPaye.Substring(NetaPaye.IndexOf(sep) + 1)

en faite le fichier txt sert dans un autre ancien programme de traitement de gestion de dépense et d'archive avec d'autre fichiers text "traçabilité informatique oblige" que je devrais copier et transmettre chaque mois, Ce fichier m'épargne de beaucoup de travail et de paperasses...
Commenter la réponse de cs_ShayW
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - Modifié par cs_ShayW le 26/03/2014 à 00:38
0
Merci
le bug est du à autre chose
j'ai testé et pas exception relevé
 Dim sep As String
sep = Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator
Dim NetaPaye As String
NetaPaye = "12323233.00"
NetaPaye = NetaPaye.Substring(0, NetaPaye.IndexOf(sep)) & NetaPaye.Substring(NetaPaye.IndexOf(sep) + 1)
autodidacte3 59 Messages postés mardi 21 juillet 2009Date d'inscription 25 décembre 2014 Dernière intervention - 26 mars 2014 à 18:32
Bonjour
Oui ça marche :)
je risque gros avec mon bidouillage; plusieurs textbox et deux datagridview lier avec quelques essais de formatage de colonnes en Double, string... Ils ont eu raison de moi. :))
Commenter la réponse de cs_ShayW

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.