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

florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008 - 8 sept. 2002 à 16:24
elmir79 Messages postés 1 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 17 juin 2004 - 17 juin 2004 à 12:11
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

cs_pimousse75 Messages postés 138 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 22 octobre 2002
9 sept. 2002 à 10:10
J'ai laissé un code dans les sources qui fait exactement ce que tu veux !!!
0
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008
9 sept. 2002 à 11:44
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
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008
9 sept. 2002 à 11:44
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
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008
9 sept. 2002 à 11:45
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008
9 sept. 2002 à 11:49
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
cs_pimousse75 Messages postés 138 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 22 octobre 2002
9 sept. 2002 à 14:05
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
cs_pimousse75 Messages postés 138 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 22 octobre 2002
9 sept. 2002 à 14:06
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
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008
9 sept. 2002 à 23:51
Tu peu m'envoyer un exemple Zipé STP?
ca serait bien sympa de t'a par,

Merci d'avance.
0
cs_pimousse75 Messages postés 138 Date d'inscription jeudi 17 janvier 2002 Statut Membre Dernière intervention 22 octobre 2002
10 sept. 2002 à 09:22
file ton adresse
0
florian37 Messages postés 56 Date d'inscription dimanche 13 janvier 2002 Statut Membre Dernière intervention 8 décembre 2008
10 sept. 2002 à 13:11
Lydy.lydy@wanadoo.fr
Merci encore
:)
0
cs_elmir Messages postés 3 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 18 mai 2004
17 mai 2004 à 16:19
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
cs_elmir Messages postés 3 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 18 mai 2004
17 mai 2004 à 16:50
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
cs_elmir Messages postés 3 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 18 mai 2004
18 mai 2004 à 16:59
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
elmir79 Messages postés 1 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 17 juin 2004
17 juin 2004 à 12:11
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
Rejoignez-nous