EXPORTER LE CONTENU D'UN DATAGRID VERS EXCEL OU N IMPORTE QUELLE AUTRE FICHIER T

surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010 - 16 août 2005 à 15:57
daless94 Messages postés 5 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 25 mars 2011 - 25 mars 2011 à 17:19
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32896-exporter-le-contenu-d-un-datagrid-vers-excel-ou-n-importe-quelle-autre-fichier-tabule

daless94 Messages postés 5 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 25 mars 2011
25 mars 2011 à 17:19
Alors moi j'aimerais relancé ce post vieux de "2ans".
Je comprend tout ce que tu fais mais je n'arrive pas à utiliser :

Dim DsAuthors1 As DataSet
Dim tablename
tamponxls = vbNullString
iCnt = Me.BindingContext(DsAuthors1, tablename).Count

tablename doit etre declaré en quoi ?
Et moi je dispose de 5 colonne mais de 15 lignes alors des que je veux intervertir les i avec les Integer ça me donne des erreurs :/

Merci
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
19 août 2009 à 13:37
:-)
oms7 Messages postés 3 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 août 2009
19 août 2009 à 10:19
Je donne 7/10
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
18 août 2009 à 12:25
oms7 : Si mon autre source te convient , peut tu lui mettre une note s'il te plait ?
oms7 Messages postés 3 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 août 2009
18 août 2009 à 09:44
Merci encore, je vais essayer ton nouveau code sur VS2005 et je t'enverrai des commentaires.
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
15 août 2009 à 13:38
Okay, comme juste avant d'aller manger j'ai réussit a avoir un résultat satisfaisant, voici donc la version "moderne", simplifiée et commentée :
http://www.vbfrance.com/codes/EXPORTER-CONTENU-DATAGRIDVIEW-VERS-EXCEL-IMPORTE-QUELLE-AUTRE_50445.aspx
Il est a noter que la modernisation remplace le vieux DataGrid de VS 2003 par le nouveau DataGridView de VS2005/2008
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
15 août 2009 à 12:41
As tu suivit les conseil de RoNaaK ou as tu utilisé la méthode de erokage?
Cela fait très, très longtemps que j'ai mis le nez dans ce code , il y a peut être comme l'expliquer erokage, deux fois la boite de dialogue, ce qui peut être la source de ton problème.

Nota : a l'époque, VS 2003, les datagrid and co, c'était pas terrible comparer a maintenant avec VS2008/MonoDevelop, il y a beaucoup plus simple et efficace maintenant pour cracher un .csv.

J'essayerai de la refaire, mais je suis passer au C# depuis plusieurs années.

Petit sondage, qui voudrai une source simplifiée pour le même résultat ?
oms7 Messages postés 3 Date d'inscription mercredi 19 mai 2010 Statut Membre Dernière intervention 19 août 2009
15 août 2009 à 09:18
Merci SURFZOID pour ce code que me sauve la vie là, je suis débutant, et il m'a donc fait diminuer mon temps de travail.

Mais je vais signaler un bug, si on peut appeler ça ainsi:
lorsqu'on enregistre le fichier une première fois depuis le début de l'application, il enregistre un fichier vide. Est-ce que quelqu'un pourrait m'aider à résoudre ce problème.
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
9 juil. 2009 à 12:08
Merci a toi noble programmeur qui passer par là :-)
kidavra Messages postés 7 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 13 juillet 2009
9 juil. 2009 à 10:55
10 pour ce code
ça marche trèès bien merci pour tes efforts
erokage Messages postés 91 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 23 juin 2009
25 mai 2009 à 11:34
oui mais il est prévu pour tourner seulement sous windows
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
25 mai 2009 à 11:17
Tu passe par du COM/OCX , style VB6/VBScrip, ton code ne fonctionnera pas sous Linux, de plus tu vas subir les mésaventures des différentes version de MS Office, c'est pour cela que a l'époque, j avais choisit la solution du csv, facile a adapter au évolution du .Net et des systèmes ....
erokage Messages postés 91 Date d'inscription mardi 19 mai 2009 Statut Membre Dernière intervention 23 juin 2009
25 mai 2009 à 09:56
Sinon moi j'ai sa mais je fonctionne sur v_b 2008 doc je ne garantie rien sur les versions enter rieur:

Dim c, j As Integer

Dim xl As New Object

xl = CreateObject("Excel.application")

xl.visible = True

xl.workbooks.Add()

For c = 0 To DataGridView1.Columns.Count - 1

xl.cells(c + 1, 1) = DataGridView1.Columns(c).Name

Next

For l As Integer = 0 To DataGridView1.Rows.Count - 1

For c = 0 To DataGridView1.Rows.Count - 1

xl.cells(l + 1, j + 1) = DataGridView1.Rows(l).Cells(c).Value

Next c

Next l

Tout de suite le fichier excel s'ouvre mais je ne suis pas parvenu a récupérer tout le datagrid avec le bonne mise en page
ps:si quelqu'un a une idée
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
5 févr. 2009 à 15:45
Merci a toi !
C'est vrai je code vraiment trop a l'arache, lol, c est l habitude de produire toujours plus vite (mauvaise habitude d'ailleurs).
Ouggada Messages postés 38 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 4 mars 2009
5 févr. 2009 à 14:28
oups j'avais pas vu... que c'était le dataset...
oh mer noire!!
Merci quand meme pour cette source!!
Tcho!!
Ouggada Messages postés 38 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 4 mars 2009
5 févr. 2009 à 14:25
Un pti 9 car mes professeur m'ont toujours dit que la note parfaite n'existait pas....
Cela étant voila un code super bien fait (pour les initiés en tous cas car cela manque un peu de commentaires) qui va bien me servir.
Cependant petite question : à quoi correspond le "DsAuthors1" car j'ai beau chercher nada!!
Sur ce bonne continuation et courage il n'y a pas que des leechers...
A bon entendeur salut!!
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
27 janv. 2009 à 09:55
Décidément, ma note descend encore, et comme toujours sans commentaire, je vois que depuis toute ces année, les gens qui fréquente VBfrance, sont persuadé de ce trouvé sur telecharger.com et que tout leur est dut, une note comme ça est utile et constructive quand le commentaire vas avec, le but d'une communauté, c est que l union fait la force .

Xavleb : tu tombe sur un de mes mauvai jours et vu le niveau de question je te conseil de d abord jetté un coup d'oeil a la section tutorial
Xavleb Messages postés 21 Date d'inscription mardi 15 janvier 2008 Statut Membre Dernière intervention 26 janvier 2009
26 janv. 2009 à 11:18
J'ai un pb, je suis en developpement web et j'ai comme message pour (Me.Grille.Item(i, 1)) :
'item n'est pas un membre de system.web.ui.webcontrol.datagrid'
Quelqu'un sait quel controle utiliser à la place???
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
20 janv. 2009 à 18:35
putot que d'enregistrer ton fichier en .xsl ou en fait .xls , enregistre le en .csv
bougachouch Messages postés 1 Date d'inscription dimanche 21 octobre 2007 Statut Membre Dernière intervention 20 janvier 2009
20 janv. 2009 à 16:33
mais ,ça marche pas pour moi je sais pas pk ,il me donne comme message d'erreur excel et xsl non reconnu!!
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
25 nov. 2008 à 16:12
oui, chaque colonne d'une datagrid a une propriété header ou/et name
donc un truc du genre
for each datagridcolum Clm in mydatagriview.collums

devrait faire l'affaire
sushi59520 Messages postés 1 Date d'inscription mardi 25 novembre 2008 Statut Membre Dernière intervention 25 novembre 2008
25 nov. 2008 à 15:23
Merci bcp pour ce code, il m'a été très utile.
Cependant, est-il possible de récupérer dans le fichier Excel les titres de mes colonnes?
Si oui, comment ?
Merci d'avance
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
11 janv. 2008 à 20:35
tchouuuuu, enfin, merci RoNaaK..........
Utilisateur anonyme
9 janv. 2008 à 14:30
Sous VS 2k5, petite adaptation necessaire;
iCnt = 12
Car pour mon application je n'exporte que 12 mois, pas besoin de verifier combien il y en aura.
Sinon, dommage que sa n'exporte pas l'intitulé des colonnes.
Bug constaté: la boite de dialogue pour choisir le nom, le format et l'endroit où l'on veut l'enregistrer apparait deux fois consécutive, comme si la 1ere n'était pas pris en compte.
Après verification du code, effectivement lors de la vérifcation de la condition :
If saveFileDialog1.ShowDialog() = DialogResult.OK Then
L'appli relance la boite de dialogue, donc j'ai supprimer la ligne précédente:
saveFileDialog1.ShowDialog()
Et voila.
Je n'ai tester qu'au format excel, je suppose que pour les autres formats il n'y ai aucun bug (je ne voit pas de raison)

PS: pensez aussi a adapter les lignes:
tamponxls = tamponxls & (Me.Grille.Item(i, 1)) & vbTab
tamponxls = tamponxls & (Me.Grille.Item(i, 2)) & vbTab
tamponxls = tamponxls & (Me.Grille.Item(i, 3)) & vbTab & vbCr
en fonction de votre tableau, c'est comme pour iCnt = 12, 12 car j'avai 12 lignes
Ici j'ai 3 colonnes (sans compter la colonnes de ma clef primaire qui est la N°0) mais qui n'est pas pris en compte dans ce code. Donc supprimer celle que vous avez en trop, ou rajoutez en si besoin. Et n'oublier pas le & vbTab & vbCr sur la derniere ligne qui permet de faire un retour a la ligne sinon votre tableau ne sera pas disposé en colonne mais sur une seule ligne.
Voila, j'espere que pour ceux qui n'ont pas réussit à l'adapter sous VS 2005 n'auront plus de problème.

Merci surfzoid pour ce code ;)
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
18 oct. 2007 à 00:07
Bizare telodoo, tu aurai un peu plus d'info sur ce qui ne marche pas s'il te plais
en effet le principe est trés simple, rudimentaire et peut performant, car en fait il consiste a scuté les cellule d'une grille de donnée une par une, en recupérer les valeurs au fur et amesure et stocké ces valeur dans une string en concatenan les chaine, chaque cellule concaténé ressemble a :
"val cellule & separateur, ou séparateur peut etre un ; ou une , ou un tab, as yu want
puis on ecrit le text ds un fichier.
Pour des question de performance je propose de ramplacer la "string" par une system.text.stringbuilder
c'est mieu
telodoo Messages postés 10 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 10 octobre 2007
17 oct. 2007 à 19:12
J'ai perdu mon temps a tester le code sous VS2005, ca ne passe pas. ++
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
29 juil. 2007 à 13:26
on peut remplacer le binding context en travaillan directement sur le datagridview.item
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
25 avril 2007 à 11:34
BindingContext = Context des donnée liée
DsAuthors1 = Dataset de contenu des données d'une base de donnée
Tablename = nom de la table ds la BdB
DataGrid1 = Grille de donnée liée a une table de Bdb
Cela reviendrait au meme de dire
iCnt = Me.DataGrid1.items.Count 'Mais ne garentit pas que le dataset a été "Update"
cs_medee Messages postés 10 Date d'inscription dimanche 27 octobre 2002 Statut Membre Dernière intervention 14 mars 2008
25 avril 2007 à 10:38
Salut, j'ai également un probleme, au passage de BindingContext, survient une erreur {"La référence d'objet n'est pas définie à une instance d'un objet." }
L'objet de type datasource passé en parametre n'est pas null, je n'arrive pas à identifier d'ou viens le probleme.
AlPROGRAMMEUR as tu résolu ton problème ?
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
14 juil. 2006 à 12:11
je ne sais quelle note cela vaut (lol( mais as tu essayer les explication qui sont donnée ici :
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=375554&SiteId=1
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
12 juil. 2006 à 23:17
quand au fait de mal noté ce serait bien d'expliquer pourquoi
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
12 juil. 2006 à 23:16
Ben il marche pas mon bout de code pour faire un csv ?
C'est avec VS 2003 mais je pense qu'il fonction aussi avec VS2005
skymohamed Messages postés 1 Date d'inscription jeudi 23 juin 2005 Statut Membre Dernière intervention 10 juillet 2006
10 juil. 2006 à 19:42
Salut tt le monde
S'il vous plai si vs avé déja trouver la solution d'export de données d'un datagrid vers excel, faite moi signe car vs allez me sauver la vie.
safé 4 mois que je cherche.
skymohamed@caramail.com
merci d'avance
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
22 juin 2006 à 16:16
mais bon sang qui mets des notes sans dire quoi que ce soit, ont se demande vraiment si le code a été utiliser
lol
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
28 nov. 2005 à 13:52
comme indiquer ds le titre ce bout de code sert à :
EXPORTER LE CONTENU D'UN DATAGRID VERS EXCEL OU N IMPORTE QUELLE AUTRE
et exporter un fichier csv vers je ne sais quoi d'ailleur
donc la source est issue d un DATAGRID (grille qui affiche le contenu d'une base de donnée) et exporter dans un fichier texte (cvs,xls, rtf ou ce que tu veux ça reste plus ou moins du texte)
alprogrammeur Messages postés 1 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 17 novembre 2005
17 nov. 2005 à 09:10
Je cherche comment exporter un fichier csv
mon prob, je sais pas ce que signifie 'bindingcontext'
et savefiledialog
il me met erreur
merci

Dim i
Dim iCnt As Integer
Dim tamponxls As String
tamponxls = vbNullString
iCnt = Me.BindingContext(DsAuthors1, tablename).Count
For i = 0 To iCnt
If i = iCnt Then Exit For
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 1)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 2)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 3)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 4)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 5)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 6)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 7)) & vbTab
tamponxls = tamponxls & (Me.DataGrid1.Item(i, 8)) & vbTab & vbCr
Next i
RichTextBox1.Text = tamponxls
' Displays a SaveFileDialog so the user can save the Image
' assigned to Button2.
Dim saveFileDialog1 As New SaveFileDialog
saveFileDialog1.Filter = "Excel|*.xls|Texte|*.txt|Richtext|*.rtf"
saveFileDialog1.Title = "Sauver le fichier exporter sous ?"
saveFileDialog1.ShowDialog()

If saveFileDialog1.ShowDialog() = DialogResult.OK Then
RichTextBox1.SaveFile(saveFileDialog1.FileName, _
RichTextBoxStreamType.PlainText)
End If
surfzoid Messages postés 463 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 21 avril 2010
16 août 2005 à 15:57
Tien on m'a mis un 7/10 les commentaires lié à cette notes serais toujours les bien venu
Merci à toi "étranger"