Datagridview et sortie en fichier text sans virgules

Résolu
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014 - Modifié par autodidacte3 le 25/03/2014 à 16:32
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014 - 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.




[ ]

2 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
25 mars 2014 à 20:53
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)
1
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014
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.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
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 ?
0
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014
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...
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
Modifié par cs_ShayW le 26/03/2014 à 00:38
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)
0
autodidacte3 Messages postés 58 Date d'inscription mardi 21 juillet 2009 Statut Membre Dernière intervention 25 décembre 2014
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. :))
0
Rejoignez-nous