Listview vers Excel, petit probleme... URGENT !!! SVP<<<<<

Signaler
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008
-
Messages postés
1
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
17 juin 2004
-
Bonjour à tous amis dévelopeur,
voici mon prbleme,
j'ai une listview qui contiens plusieurs lignes (ca peu varier), je la transfert vers ecxel mais elle me copie que la premiere ligne de ma listview,
pouvez vous getter un oeil sur mon code et me dire comment faire pour copier les autres lignes de la listview dans les cases suivante d'excel?

Voici le code:
Private Sub ExportExcel_Click()
Dim i As Integer
Dim j As Integer

'Chemin du fichier a modifier à chaque installation
repertoire = "C:\fichier.xls"
'Ouverture de l'application
Set appexcel = New Excel.Application
'Gestion du fichier et ouverture statique
appexcel.Workbooks.Open repertoire
'Visualisation en fond d'ecran la page excel
appexcel.Visible = True
'On remplit l'entete de la page excel
appexcel.Worksheets(1).Cells(1, 1).Value = "Date et Heure:"
appexcel.Worksheets(1).Cells(1, 2).Value = "Blanc:"
appexcel.Worksheets(1).Cells(1, 3).Value = "Ciment Blanc:"
appexcel.Worksheets(1).Cells(1, 4).Value = "Ciment Gris:"
appexcel.Worksheets(1).Cells(1, 5).Value = "Concasse:"
appexcel.Worksheets(1).Cells(1, 6).Value = "Filler:"
appexcel.Worksheets(1).Cells(1, 7).Value = "Mi Casse:"
appexcel.Worksheets(1).Cells(1, 8).Value = "Roule:"
appexcel.Worksheets(1).Cells(1, 9).Value = "Silice:"
appexcel.Worksheets(1).Cells(1, 10).Value = "Silice humide:"
appexcel.Worksheets(1).Cells(1, 11).Value = "Vasilogrit:"

appexcel.Worksheets(1).Cells(2 + x, 1).Value = lsvResult.ListItems.Item(1)
appexcel.Worksheets(1).Cells(2, 2).Value = lsvResult.SelectedItem.ListSubItems(1)
appexcel.Worksheets(1).Cells(2, 3).Value = lsvResult.SelectedItem.ListSubItems(2)
appexcel.Worksheets(1).Cells(2, 4).Value = lsvResult.SelectedItem.ListSubItems(3)
appexcel.Worksheets(1).Cells(2, 5).Value = lsvResult.SelectedItem.ListSubItems(4)
appexcel.Worksheets(1).Cells(2, 6).Value = lsvResult.SelectedItem.ListSubItems(5)
appexcel.Worksheets(1).Cells(2, 7).Value = lsvResult.SelectedItem.ListSubItems(6)
appexcel.Worksheets(1).Cells(2, 8).Value = lsvResult.SelectedItem.ListSubItems(7)
appexcel.Worksheets(1).Cells(2, 9).Value = lsvResult.SelectedItem.ListSubItems(8)
appexcel.Worksheets(1).Cells(2, 10).Value = lsvResult.SelectedItem.ListSubItems(9)
appexcel.Worksheets(1).Cells(2, 11).Value = lsvResult.SelectedItem.ListSubItems(11)

For i = 1 To 11

appexcel.Worksheets(1).Cells(1, i).Font.Bold = True
appexcel.Worksheets(1).Cells(1, i).Font.Size = 8
appexcel.Worksheets(1).Cells(1, i).HorizontalAlignment = xlCenter
appexcel.Worksheets(1).Cells(1, i).VerticalAlignment = xlCenter
Next i
For j = 1 To 11
appexcel.Worksheets(1).Cells(2, j).HorizontalAlignment = xlCenter
Next j
End Sub

Merci de me dire comment fair avec un loop par exemple ou autre car je vois pas trop la,
je suis débutant.

Merci d'avance,
Florian.

14 réponses

Messages postés
138
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
22 octobre 2002

J'ai laissé un code dans les sources qui fait exactement ce que tu veux !!!
0
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008

J'ai vu t'a source,
d'ailleur le code que j'ai fait en ai tiré,
mais il n'ecrit pas toute la listview automatiquement dans le fichier excel, il faut rentrer lignes par lignes,
mais vu que je peu en avoir 1 comme 500 lignes, je me vois pas devoir ecrire 500 fois la même chose, il doit bien exister une ligne de commande comme un loop ou autre chose mais je ne trouve pas la logique...

Si vous avez une idée....
0
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008

J'ai vu t'a source,
d'ailleur le code que j'ai fait en ai tiré,
mais il n'ecrit pas toute la listview automatiquement dans le fichier excel, il faut rentrer lignes par lignes,
mais vu que je peu en avoir 1 comme 500 lignes, je me vois pas devoir ecrire 500 fois la même chose, il doit bien exister une ligne de commande comme un loop ou autre chose mais je ne trouve pas la logique...

Si vous avez une idée....
0
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008

J'ai vu t'a source,
d'ailleur le code que j'ai fait en ai tiré,
mais il n'ecrit pas toute la listview automatiquement dans le fichier excel, il faut rentrer lignes par lignes,
mais vu que je peu en avoir 1 comme 500 lignes, je me vois pas devoir ecrire 500 fois la même chose, il doit bien exister une ligne de commande comme un loop ou autre chose mais je ne trouve pas la logique...

Si vous avez une idée....
0
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008

Je me suis trompé,
c'est pas de toi que je me suis inspiré,
c'est à toi que j'ai laissé un mail car je n'arrivais pas à faire fonctionner ta source...

Si tu peu laisser un exemple avec un zip sa pourrait m'aider beaucoup surement ta source.
0
Messages postés
138
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
22 octobre 2002

il s'agit bien de ce code

Public Sub Export_Excel(My_Listview As Listview, Nbr_Lignes As Integer, Nbr_Colonnes As Integer)
Dim Appli As New Excel.Application
Dim Ligne As String
Dim LigneExcel As Integer
Dim ColExcel As Integer
Dim compt As Integer
Dim comptcol As Integer
Dim fso As New FileSystemObject

'Rendre visible EXCEL
Appli.Visible = True


'Créer un nouveau classeur EXCEL initialisé à la ligne 1
Appli.Workbooks.Add.Activate
DoEvents
LigneExcel = 1
ColExcel = 1

'MsgBox Appli.Workbooks.Count

' Affecter les données de la listbox dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")


'Insere le nom des entetes de colonnes
For comptcol = 0 To Nbr_Colonnes - 1
.Cells(LigneExcel, ColExcel) = My_Listview.ColumnHeaders(comptcol + 1)
ColExcel = ColExcel + 1
Next comptcol

ColExcel = 1
LigneExcel = LigneExcel + 1

'Inscrire le contenu d'une listview dans la feuille 1 d'un classeur EXCEL
For compt = 0 To My_Listview.ListItems.Count - 1

'On boucle sur les colonnes
For comptcol = 0 To Nbr_Colonnes - 1
If comptcol = 0 Then
.Cells(LigneExcel, ColExcel) = My_Listview.ListItems.item(LigneExcel - 1)
Else
.Cells(LigneExcel, ColExcel) = My_Listview.ListItems.item(LigneExcel - 1).ListSubItems(comptcol)
End If
ColExcel = ColExcel + 1
Next comptcol


ColExcel = 1
LigneExcel = LigneExcel + 1
Next compt

End With

'Pour mettre l'entête des colonnes en gras
ActiveWorkbook.Worksheets("Feuil1").Range("A1:" & Chr(65 + Nbr_Colonnes - 1) & "1").Font.Bold = True
'Pour ajuster les colonnes
ActiveWorkbook.Worksheets("Feuil1").Range("A:" & Chr(65 + Nbr_Colonnes - 1)).Columns.AutoFit

End Sub

Dans ce cas, il y a bien un boucle sur le nombre de lignes de la listview !!!
0
Messages postés
138
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
22 octobre 2002

il s'agit bien de ce code

Public Sub Export_Excel(My_Listview As Listview, Nbr_Lignes As Integer, Nbr_Colonnes As Integer)
Dim Appli As New Excel.Application
Dim Ligne As String
Dim LigneExcel As Integer
Dim ColExcel As Integer
Dim compt As Integer
Dim comptcol As Integer
Dim fso As New FileSystemObject

'Rendre visible EXCEL
Appli.Visible = True


'Créer un nouveau classeur EXCEL initialisé à la ligne 1
Appli.Workbooks.Add.Activate
DoEvents
LigneExcel = 1
ColExcel = 1

'MsgBox Appli.Workbooks.Count

' Affecter les données de la listbox dans les cellules de la feuille
With ActiveWorkbook.Worksheets("Feuil1")


'Insere le nom des entetes de colonnes
For comptcol = 0 To Nbr_Colonnes - 1
.Cells(LigneExcel, ColExcel) = My_Listview.ColumnHeaders(comptcol + 1)
ColExcel = ColExcel + 1
Next comptcol

ColExcel = 1
LigneExcel = LigneExcel + 1

'Inscrire le contenu d'une listview dans la feuille 1 d'un classeur EXCEL
For compt = 0 To My_Listview.ListItems.Count - 1

'On boucle sur les colonnes
For comptcol = 0 To Nbr_Colonnes - 1
If comptcol = 0 Then
.Cells(LigneExcel, ColExcel) = My_Listview.ListItems.item(LigneExcel - 1)
Else
.Cells(LigneExcel, ColExcel) = My_Listview.ListItems.item(LigneExcel - 1).ListSubItems(comptcol)
End If
ColExcel = ColExcel + 1
Next comptcol


ColExcel = 1
LigneExcel = LigneExcel + 1
Next compt

End With

'Pour mettre l'entête des colonnes en gras
ActiveWorkbook.Worksheets("Feuil1").Range("A1:" & Chr(65 + Nbr_Colonnes - 1) & "1").Font.Bold = True
'Pour ajuster les colonnes
ActiveWorkbook.Worksheets("Feuil1").Range("A:" & Chr(65 + Nbr_Colonnes - 1)).Columns.AutoFit

End Sub

Dans ce cas, il y a bien un boucle sur le nombre de lignes de la listview !!!
0
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008

Tu peu m'envoyer un exemple Zipé STP?
ca serait bien sympa de t'a par,

Merci d'avance.
0
Messages postés
138
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
22 octobre 2002

file ton adresse
0
Messages postés
56
Date d'inscription
dimanche 13 janvier 2002
Statut
Membre
Dernière intervention
8 décembre 2008

Lydy.lydy@wanadoo.fr
Merci encore
:)
0
Messages postés
3
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
18 mai 2004

bon
je suis un programmeur marocain voici email:
elmir79@hotmail.com

Pour copier autre ligne il faut faire boucle imbriquer puis il faut sélectionner la ligne de listeview suivant

example;

for j=1 to listview1.listitem.count
for i=1 to listview1.columhandre.count

appexcel.Worksheets(1).Cells(j, i).Value = listview1.SelectedItem.ListSubItems(j)
next i
listview1.listitem(j+1).selected=true
next

domain je te donne code source on VB
0
Messages postés
3
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
18 mai 2004

bon
je suis un programmeur marocain voici email:
elmir79@hotmail.com

Pour copier autre ligne il faut faire boucle imbriquer puis il faut sélectionner la ligne de listeview suivant

example;

for j=1 to listview1.listitem.count
for i=1 to listview1.columhandre.count

appexcel.Worksheets(1).Cells(j, i).Value = listview1.SelectedItem.ListSubItems(j)
next i
listview1.listitem(j+1).selected=true
next j

domain je te donne code source on VB
0
Messages postés
3
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
18 mai 2004

bonjour tout le monde
voici la solution de tout les problèmes:

j'ai attend les remarque
-------------------------------------
elmir79@hotmail.com
-------------------------------------
Private Sub ExportExcel_Click()
Dim i As Integer
Dim j As Integer

'Chemin du fichier a modifier à chaque installation
repertoire = "C:\fichier.xls"
'Ouverture de l'application
Set appexcel = New Excel.Application
'Gestion du fichier et ouverture statique

appexcel.Workbooks.Open repertoire
'Visualisation en fond d'ecran la page excel
appexcel.Visible = True
'On remplit l'entete de la page excel
appexcel.Worksheets(1).Cells(1, 1).Value = "Date et Heure:"
appexcel.Worksheets(1).Cells(1, 2).Value = "Blanc:"
'appexcel.Worksheets(1).Cells(1).Width = 8000
Application.WindowState = xlMaximized 'plain ecran

With appexcel.Worksheets(1).Columns(3)
.ColumnWidth = .ColumnWidth * 5
End With

appexcel.Worksheets(1).Cells(1, 3).Value = "Ciment Blanc:"
appexcel.Worksheets(1).Cells(1, 4).Value = "Ciment Gris:"
appexcel.Worksheets(1).Cells(1, 5).Value = "Concasse:"
appexcel.Worksheets(1).Cells(1, 6).Value = "Filler:"
appexcel.Worksheets(1).Cells(1, 7).Value = "Mi Casse:"
appexcel.Worksheets(1).Cells(1, 8).Value = "Roule:"
appexcel.Worksheets(1).Cells(1, 9).Value = "Silice:"
appexcel.Worksheets(1).Cells(1, 10).Value = "Silice humide:"
appexcel.Worksheets(1).Cells(1, 11).Value = "Vasilogrit:"


For j = 1 To ListView1.ListItems.Count

appexcel.Worksheets(1).Cells(2 + j, 1).Value = ListView1.ListItems.Item(j)
For i = 1 To ListView1.ColumnHeaders.Count - 1
appexcel.Worksheets(1).Cells(j + 2, i + 2).Value = ListView1.SelectedItem.ListSubItems(i)
Next i

ListView1.ListItems(j).Selected = true ' pour séléctionne la ligne listeview suivant

Next j

For i = 1 To 6
With appexcel.Worksheets(1).Columns(i)
.Font.Size = 10
End With
appexcel.Worksheets(1).Cells(1, i).Font.Bold = True
appexcel.Worksheets(1).Cells(1, i).Font.Size = 10
appexcel.Worksheets(1).Cells(1, i).HorizontalAlignment = xlCenter
appexcel.Worksheets(1).Cells(1, i).VerticalAlignment = xlCenter
Next i
For j = 1 To 11
appexcel.Worksheets(1).Cells(2, j).HorizontalAlignment = xlCenter
Next j

End Sub
0
Messages postés
1
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
17 juin 2004

if faut faire une boucle imbrique
pas par cette methode qui tres long
mais astuce c'est selectioner la ligne suivant de la listview

bon demain je te donne la solution complet

by
0