Salut,
Je suis entrain de réaliser une application en vb.net 2008 et une base access, et j'ai une datagridview. Je veux exporter ses données vers une page Excel. Comment je peux faire ça?
Pourriez vous me fournir une piste?
Merci de votre aide.
Salut,
Je suis entrain de réaliser une application en vb.net 2008 et une base access, et j'ai une datagridview. Je veux exporter ses données vers une page Excel. Comment je peux faire ça?
Pourriez vous me fournir une piste?
Merci de votre aide.
Hello,
une petite recherche sur le forum et dans les tuto t'aidera à trouver la réponse,
si tu as des problèmes de compréhension de ces tuto / post n'hésite pas...
Bien à toi.
Bonjour chahinaz
je crois que ce lien va t'aider
http://faqvbnet.developpez.com/?page...dgrid_to_excel
Bonsoir toutes et tous,
Désolé, j'avais mis les variables en tête de module pour d'autres tests :o((. Donc, voici le code corrigé ci-dessous.
Pour "DataGridView1", il te faut remplacer ce nom par le nom que tu as donné à ton DataGridView.
Pour ce qui est des if then, end if, regarde comment et où tu copie le code que je t'ai donné.
Pour tester, crée un bouton, double clique dessus et colle le code ci-dessous situé entre les tirets :
Bon courrage.
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114 Private Sub BtnExcel_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnExcel.Click '-------- Dim AppExcel As Object Dim Classeur As Object Dim Feuille As Object Dim Plage As Object Dim I As Integer, J As Integer Try If DataGridView1.SelectedRows.Count = 0 Then MsgBox("Vous devez sélectionner au moins une ligne entière !") Exit Sub End If 'démarre l'application, la rend visible AppExcel = CreateObject("Excel.Application") AppExcel.Visible = True 'si le classeur existe, l'ouvre sinon le crée If Dir("D:/Mon Classeur par VB.xls") <> "" Then Classeur = AppExcel.Workbooks.Open("D:/Mon Classeur par VB.xls") Else Classeur = AppExcel.Workbooks.Add() End If 'défini la feuille "Feuil1" comme 'la feuille devant recevoir les données Feuille = Classeur.Worksheets("Feuil1") 'définie la plage de travail (commence à la cellule A1) 'elle est fonction du nombre de lignes sélectionnées dans 'le DataGridView ainsi que du nombre de colonnes de ce dernier With Feuille Plage = .Range(.Cells(1, 1), _ .Cells(DataGridView1.SelectedRows.Count + 1, _ DataGridView1.Columns.Count)) End With 'empèche le rafraîchissement de l'écran afin d'éviter les scintillements AppExcel.ScreenUpdating = False 'entêtes des colonnes For I = 0 To DataGridView1.Columns.Count - 1 Plage(1, I + 1) = DataGridView1.Columns(I).Name Next 'données For I = 0 To DataGridView1.SelectedRows.Count - 1 For J = 0 To DataGridView1.Rows(I).Cells.Count - 1 Plage(I + 2, J + 1) = DataGridView1.Rows(I).Cells(J).Value Next Next 'formatage de la plage With Plage 'ligne des entêtes en gras, centrée verticalement et horizontalement .Rows(1).Font.Bold = True .Rows(1).HorizontalAlignment = -4108 .Rows(1).VerticalAlignment = -4108 'cadrillage fin dans la plage et bordure plus épaisse For I = 7 To 12 .Borders(I).LineStyle = 1 'trait continu Select Case I Case 7 To 10 'cadre .Borders(I).Weight = -4138 Case 11, 12 'cadrillage .Borders(I).Weight = 2 End Select Next 'ajuste les colonnes au contenu .EntireColumn.AutoFit() End With 'rafraîchi l'écran AppExcel.ScreenUpdating = True Catch ex As Exception MsgBox(ex) AppExcel.quit() End Try '----- End Sub
Hervé.
bonjour à tous,
voici la solution en 2 heures de discussion différée avec un intervenant du forum visual basic de Microsoft.
Je crois que leur forum mérite bien d'etre cité sans vouloir faire de la pub.
merci encore pour tous ceux qui ont essayé de m'apporter une solution.
voici le lien de l'historique:
http://social.msdn.microsoft.com/For...equired&ppud=4
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
35
36
37
38
39
40
41 '============================= code pour l'exportation =================== Private Sub Exporter_vers_excel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exporter_vers_excel.Click Dim excel As Microsoft.Office.Interop.Excel.Application Try excel = New Microsoft.Office.Interop.Excel.Application excel.Workbooks.Open("C:\Users\compaq\Desktop\projet_inventaire1\bon_de_commande.xlsx") Dim i As Integer, j As Integer Dim diff As Integer = 1 ' if you want column header from dgv elese omit the block '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'For j = 0 To Table_inventairDataGridView.ColumnCount - 1 'excel.Worksheets(1).cells(1, j + 1) = Table_inventairDataGridView.Columns(j).Name 'Next 'diff += 1 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' For i = 1 To Table_inventairDataGridView.RowCount - 1 If Table_inventairDataGridView.Rows(i).IsNewRow = False Then For j = 0 To Table_inventairDataGridView.ColumnCount - 2 excel.Worksheets(1).cells(i + 12, j + 4) = Table_inventairDataGridView.Item(j, i).Value 'i+22, starts from 22nd rows, and j+8, starts from 8th column Next End If Next excel.Worksheets(1).select() excel.ActiveWorkbook().Save() excel.Workbooks.Close() excel.Quit() excel = Nothing Catch ex As System.Runtime.InteropServices.COMException MessageBox.Show("Error accessing Excel: " + ex.ToString()) Catch ex As Exception MessageBox.Show("Error: " + ex.ToString()) End Try End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager