Listview

Résolu
cs_stef26 Messages postés 14 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 janvier 2007 - 20 janv. 2007 à 10:22
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 20 janv. 2007 à 22:03
Salut

je sèche sur un problème d'alignement dans mon listview. La ligne de commande ci-dessous me place les données en décalant à chaque fois d'une ligne.

Private Sub BoutonValider_Click()



ListView1.ListItems.Clear





For i = 1 To DerniereLigne



If Feuil3.Cells(i, 1).Value > DTPicker1Debut.Value And Feuil3.Cells(i, 1).Value < DTPicker2Fin.Value Then
    ListView1.ListItems.Add = Feuil3.Cells(i, 1)
    ListView1.ListItems.Add.SubItems(1) = Feuil3.Cells(i, 2)
    ListView1.ListItems.Add.SubItems(2) = Feuil3.Cells(i, 3)
    ListView1.ListItems.Add.SubItems(3) = Feuil3.Cells(i, 4)
    ListView1.ListItems.Add.SubItems(4) = Feuil3.Cells(i, 5)
    ListView1.ListItems.Add.SubItems(5) = Feuil3.Cells(i, 6)
    ListView1.ListItems.Add.SubItems(6) = Feuil3.Cells(i, 8)
    ListView1.ListItems.Add.SubItems(7) = Format(Feuil3.Cells(i, 9), "## ##0.00 ?")
    ListView1.ListItems.Add.SubItems(8) = Format(Feuil3.Cells(i, 10), "## ##0.00 ?")
 
End If
Next
End Sub


Merci pour l'astuce, je suis sur que la clé est devant les yeux mais je coince.

10 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 janv. 2007 à 10:44
Essaye plutôt :



Dim oListItem as ListItem


For i = 1 To DerniereLigne


If Feuil3.Cells(i, 1).Value > DTPicker1Debut.Value And Feuil3.Cells(i, 1).Value < DTPicker2Fin.Value Then    set oListItem ListView1.ListItems.Add Feuil3.Cells(i, 1)
    for j = 2 to 6
        oListItem.SubItems.add(,,Feuil3.Cells(i, j))
   next j
    oListItem.SubItems.add(, , Feuil3.Cells(i, 8))
    oListItem.subItems.add(,,Format(Feuil3.Cells(i, 9), "## ##0.00 ?"))
    oListItem.subItems.add(,, Format(Feuil3.Cells(i, 10), "## ##0.00 ?"))
End If


Next i
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 janv. 2007 à 11:30
Essaye comme ceci :

set oListItem = ListView1.ListItems.Add ( , , Feuil3.Cells(i, 1))
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 janv. 2007 à 11:42
Bon...
J'ai "transposé" pour toi (sans préjudice de la partie excel relative aux cellules choisies......... je ne connais pas Excel)

Essaye ceci

Private Sub BoutonValider_Click()
ListView1.ListItems.Clear

Dim itmX As ListItem

For i = 1 To DerniereLigne 
    If Feuil3.Cells(i, 1).Value > DTPicker1Debut.Value And Feuil3.Cells(i, 1).Value < DTPicker2Fin.Value Then
    Set itmX =  ListView1.ListItems.Add ( , , Feuil3.Cells(i, 1))
    itmX.SubItems(1) = Feuil3.Cells(i, 2)
    itmX.SubItems(2) = Feuil3.Cells(i, 3)
    itmX.SubItems(3) = Feuil3.Cells(i, 4)
    itmX.SubItems(4) = Feuil3.Cells(i, 5)
    itmX.SubItems(5) = Feuil3.Cells(i, 6)
   itmX.SubItems(6) = Feuil3.Cells(i, 8)
   itmX.SubItems(7) = Format(Feuil3.Cells(i, 9), "## ##0.00 ?")
    itmX.SubItems(8) = Format(Feuil3.Cells(i, 10), "## ##0.00 ?")
 
End If
Next
End Sub
3
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 janv. 2007 à 10:49
Je ne sais pas comment ce que tu as écrit peut marcher ...

Voilà un exemple de comment écrire :

Private Sub BoutonValider_Click()
   ListView1.ColumnHeaders.Add , , "titre1", ListView1.Width / 3
    ListView1.ColumnHeaders.Add , , "titre2", ListView1.Width / 3, lvwColumnCenter
    ListView1.ColumnHeaders.Add , , "titre3", ListView1.Width / 3
    Dim itmX As ListItem
    For i = 1 To 3
       Set itmX = ListView1.ListItems.Add(, , i)
       itmX.SubItems(1) = "a" & i
       itmX.SubItems(2) = "b" & i
    Next
End Sub
0

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

Posez votre question
cs_stef26 Messages postés 14 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 janvier 2007
20 janv. 2007 à 11:18
Hello,

j'ai une erreur de syntaxe qui s'affiche pour Le oListItem.

toute cette partie s'affiche en rouge ??? Que me manque - t'il ???

merci
0
cs_stef26 Messages postés 14 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 janvier 2007
20 janv. 2007 à 11:28
JMFmarque

Toute mes en-tête de colonnes sont déclarer dans UserForm Activate

'ListView1.ColumnHeaders.Add , , "Date", ListView1.Width * 0.12, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Nom", ListView1.Width * 0.1, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Code", ListView1.Width * 0.12, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Désignation", ListView1.Width * 0.3, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Secteur", ListView1.Width * 0.1, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Machine", ListView1.Width * 0.1, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Qté", ListView1.Width * 0.05, lvwColumnLeft
'ListView1.ColumnHeaders.Add , , "Prix un", ListView1.Width * 0.07, lvwColumnRight
'ListView1.ColumnHeaders.Add , , "Prix total", ListView1.Width * 0.07, lvwColumnRight

et ça marche.

sinon ta soluce fonctionne, mais il faut que je l'adapte à mon programme

merci
++
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 janv. 2007 à 11:34
oui exact pour l'ajout du listitem, pas relu mon code !
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 janv. 2007 à 11:48
cequi devrait donc être simplifié en :

Private Sub BoutonValider_Click()
ListView1.ListItems.Clear

Dim itmX As ListItem

For i = 1 To DerniereLigne 
    If Feuil3.Cells(i, 1).Value > DTPicker1Debut.Value And Feuil3.Cells(i, 1).Value < DTPicker2Fin.Value Then
    Set itmX =  ListView1.ListItems.Add ( , , Feuil3.Cells(i, 1))
    for j = 1 to 8
      itmX.SubItems(1) = Feuil3.Cells(i, j)
    next j
    itmX.SubItems(7) = Format(Feuil3.Cells(i, 9), "## ##0.00 ?")
    itmX.SubItems(8) = Format(Feuil3.Cells(i, 10), "## ##0.00 ?")
 
End If
Next
End Sub
0
cs_stef26 Messages postés 14 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 janvier 2007
20 janv. 2007 à 21:57
merci à vous pour votre aide

c'est trop fort, ça marche !!!!

merci et à bientôt
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
20 janv. 2007 à 22:03
Bonsoir Stef,

Veux-tu bien, s'il te plait, valider la réponse faite par DARKSIDIOUS ? (l'erreur de frappe qu'il a commise et corrigée plus bas  ne change rien à la validité de sa réponse)
D'autant que son ouverture d'une boucle J dans la boucle i est conseillée.

Merci.
0
Rejoignez-nous