Listview

maval

XLDnaute Barbatruc
Bonjour,

J'ai sur formulaire une Listview lorsque je sélectionne un item j'aimerai que la ligne se trouve en troisième position sur ma feuille j'ai mis comme code ceci:

Code:
  Set C = [B:B].Find(TextBox2, , , 1)
   Application.GoTo Cells(C.Row, 1), 1

et je me retrouve toujours décaler.

je vous remercie de votre aide
 

jecherche

XLDnaute Occasionnel
Re : Listview

Bonjour,

Pas sûr d'avoir compris :
3 lignes plus basse que la recherche
Code:
 Set C = [B:B].Find(TextBox2, , , 1)
   Application.GoTo Cells(C.Row + 3, 1), 1
Ou pour la ligne 3
Code:
 Set C = [B:B].Find(TextBox2, , , 1)
   Application.GoTo Cells(3, 1), 1



Jecherche
 
Dernière modification par un modérateur:

maval

XLDnaute Barbatruc
Re : Listview

Re,

Je n'ai aucun message d'erreur?

Juste qui sélectionne pas les bonne lignes

Code:
Private Sub userform_initialize()

    Me.CommandButton1.Enabled = False
    Me.CommandButton2.Enabled = False
    Me.CommandButton3.Enabled = False
    Me.Frame2.Visible = False
    Me.Label12.Visible = False
 With ListView1
  With .ColumnHeaders
      .Clear
      '.Add , , "Col", 20
      .Add , , "N°", 20
      .Add , , "Titre du Film", 120
      .Add , , "Titre en français", 120
      .Add , , "Date de Sortie", 60
      .Add , , "Acteurs", 190
      .Add , , "Genre", 50
      .Add , , "Nationalité", 70
      .Add , , "Année", 40
      .Add , , "Durée", 60
      .Add , , "Critique Presse", 60
      .Add , , "Critique Public", 60
      .Add , , "Réalisateur", 80

    End With
    .FullRowSelect = True 'Permet le sélection de toute la ligne
    .MultiSelect = True
    .View = lvwReport 'Affichage en mode Rapport

  End With
  ListView1.Gridlines = True 'Affichage d'un quadrillage
  
  appel
fin:
'Nombre de lignes
Lbl_Info.Caption = "Résultat du Filtre   :   " & ListView1.ListItems.Count - 1 & "    Film(s) enregistré" & IIf(ListView1.ListItems.Count = 1, "", "s.")
'Stop

End Sub

Sub appel()
With ListView1
 Sheets("Données").Activate
 For i = 2 To Range("C65536").End(xlUp).Row
        
           .ListItems.Add , , Cells(i, 1)
               For k = 2 To 12 ' Nombre Item dans la Listview
                 .ListItems(.ListItems.Count).ListSubItems.Add , , Cells(i, k), , lvwColumnCenter
               Next
         '.ListItems(.ListItems.Count).ListSubItems.Add , , i, , lvwColumnCenter
        Next
       
End With
fin:
End Sub

Private Sub listview1_Click()
Dim Nl2 As Long


  ' Recherche du film et positionnement sur la ligne dans la feuille
  Set c = [B:B].Find(TextBox2, , , 1)
   Application.GoTo Cells(c.Row, 1), 1

'With Worksheets("Données")
If OptionButton2 Then
 Me.Frame2.Visible = True
        Me.CommandButton3.Enabled = False
        Me.CommandButton2.Enabled = True
        Me.CommandButton1.Enabled = False
        Me.Frame4.Visible = True    'False
        Me.ListView1.MultiSelect = False
    End If

If OptionButton3 Then
 Me.Frame2.Visible = True
        Me.CommandButton3.Enabled = False
        Me.CommandButton2.Enabled = False
        Me.CommandButton1.Enabled = True
        Me.Frame4.Visible = True    'False
        Me.ListView1.MultiSelect = False
    End If
Dim i As Integer
flag = 1
With ListView1
'Stop
    ligne = .SelectedItem.Index + 1
    TextBox1 = .SelectedItem
    TextBox2 = .SelectedItem.ListSubItems(1)
    TextBox3 = .SelectedItem.ListSubItems(2)
    TextBox4 = .SelectedItem.ListSubItems(3)
    TextBox5 = .SelectedItem.ListSubItems(4)
    TextBox6 = .SelectedItem.ListSubItems(5)
    TextBox7 = .SelectedItem.ListSubItems(6)
    TextBox8 = .SelectedItem.ListSubItems(7)
    TextBox9 = .SelectedItem.ListSubItems(8)
    TextBox10 = .SelectedItem.ListSubItems(9)
    TextBox11 = .SelectedItem.ListSubItems(10)
    
TextBox12.Value = TextBox2.Text
TextBox13.Value = TextBox6.Text
TextBox14.Value = TextBox4.Text
TextBox15.Value = TextBox5.Text

' Insertion de l'affiche du film
    
    On Error GoTo Erreur 'si erreur aller à fin

    Image = TextBox2.Value
    Image1.Picture = LoadPicture("J:\Covers\" & Image & ".jpg")

Exit Sub ' ici on sort si pas d'erreur

Erreur: 'ici c'est l'image par défaut qui s'affiche en cas d'erreur
Image1.Picture = LoadPicture("J:\Covers\WarnerBross.jpg")
Err.Clear ' Efface les champs d'erreur
   
 End With
   Set c = [B:B].Find(TextBox2, , , 1)
    Application.GoTo Cells(1, 3), 1

flag = 0
End Sub

@+
 
Dernière édition:

jecherche

XLDnaute Occasionnel
Re : Listview

Bonjour,

Pour comprendre, j'ai dû me taper la création du userform en question :(
Si j'ai bien compris la problématique ... à tester ...
Code:
Private Sub userform_initialize()

    Me.CommandButton1.Enabled = False
    Me.CommandButton2.Enabled = False
    Me.CommandButton3.Enabled = False
    Me.Frame2.Visible = False
    Me.Label12.Visible = False
 With ListView1
  With .ColumnHeaders
      .Clear
      '.Add , , "Col", 20
      .Add , , "N°", 20
      .Add , , "Titre du Film", 120
      .Add , , "Titre en français", 120
      .Add , , "Date de Sortie", 60
      .Add , , "Acteurs", 190
      .Add , , "Genre", 50
      .Add , , "Nationalité", 70
      .Add , , "Année", 40
      .Add , , "Durée", 60
      .Add , , "Critique Presse", 60
      .Add , , "Critique Public", 60
      .Add , , "Réalisateur", 80

    End With
    .FullRowSelect = True 'Permet le sélection de toute la ligne
    .MultiSelect = True
    .View = lvwReport 'Affichage en mode Rapport

  End With
  ListView1.Gridlines = True 'Affichage d'un quadrillage
 
  appel
fin:
'Nombre de lignes
Lbl_Info.Caption = "Résultat du Filtre   :   " & ListView1.ListItems.Count - 1 & "    Film(s) enregistré" & IIf(ListView1.ListItems.Count = 1, "", "s.")
'Stop
Set c = Worksheets("Données").Range("B:B").Find(TextBox2, , , 1)
    Application.GoTo Worksheets("Données").Cells(1, 3) ', 1
End Sub

Sub appel()
With ListView1
 Sheets("Données").Activate
 For i = 2 To Range("C65536").End(xlUp).Row
       
           .ListItems.Add , , Cells(i, 1)
               For k = 2 To 12 ' Nombre Item dans la Listview
                 .ListItems(.ListItems.Count).ListSubItems.Add , , Cells(i, k), , lvwColumnCenter
               Next
         '.ListItems(.ListItems.Count).ListSubItems.Add , , i, , lvwColumnCenter
        Next
       
End With
fin:
End Sub

Private Sub listview1_Click()
Dim Nl2 As Long

With ListView1
'Stop
    ligne = .SelectedItem.Index '+ 1
    TextBox1 = .SelectedItem
    TextBox2 = .SelectedItem.ListSubItems(1)
    TextBox3 = .SelectedItem.ListSubItems(2)
    TextBox4 = .SelectedItem.ListSubItems(3)
    TextBox5 = .SelectedItem.ListSubItems(4)
    TextBox6 = .SelectedItem.ListSubItems(5)
    TextBox7 = .SelectedItem.ListSubItems(6)
    TextBox8 = .SelectedItem.ListSubItems(7)
    TextBox9 = .SelectedItem.ListSubItems(8)
    TextBox10 = .SelectedItem.ListSubItems(9)
    TextBox11 = .SelectedItem.ListSubItems(10)
   
TextBox12.Value = TextBox2.Text
TextBox13.Value = TextBox6.Text
TextBox14.Value = TextBox4.Text
TextBox15.Value = TextBox5.Text

   On Error GoTo Erreur 'si erreur aller à fin

    Image = TextBox2.Value
    Image1.Picture = LoadPicture("J:\Covers\" & Image & ".jpg")
  
   ' Recherche du film et positionnement sur la ligne dans la feuille
 Set c = [B:B].Find(TextBox2, , , 1)
   Application.GoTo Cells(c.Row, 1), 1

Exit Sub ' ici on sort si pas d'erreur

Erreur: 'ici c'est l'image par défaut qui s'affiche en cas d'erreur
''Image1.Picture = LoadPicture("J:\Covers\WarnerBross.jpg")
'Err.Clear ' Efface les champs d'erreur
   
 End With
 
If OptionButton2 Then
 Me.Frame2.Visible = True
        Me.CommandButton3.Enabled = False
        Me.CommandButton2.Enabled = True
        Me.CommandButton1.Enabled = False
        Me.Frame4.Visible = True    'False
        Me.ListView1.MultiSelect = False
    End If

If OptionButton3 Then
 Me.Frame2.Visible = True
        Me.CommandButton3.Enabled = False
        Me.CommandButton2.Enabled = False
        Me.CommandButton1.Enabled = True
        Me.Frame4.Visible = True    'False
        Me.ListView1.MultiSelect = False
    End If
Dim i As Integer
flag = 1
flag = 0
End Sub


Jecherche
 

Bebere

XLDnaute Barbatruc
Re : Listview

bonjour maval,je cherche
pas facile sans fichier
tu peux charger la listview et employer la propriété key
exemple
Sub appel()
With ListView1
Sheets("Données").Activate
For i = 2 To Range("C65536").End(xlUp).Row
cle = Cells(i, 1).Address(0, 0)
.ListItems.Add , cle, Cells(i, 1)
For k = 2 To 12 ' Nombre Item dans la Listview
cle = Cells(i, k).Address(0, 0)
.ListItems(.ListItems.Count).ListSubItems.Add , cle, Cells(i, k), , lvwColumnCenter
Next
'.ListItems(.ListItems.Count).ListSubItems.Add , , i, , lvwColumnCenter
Next

End With
End Sub

Private Sub listview1_Click()
Dim Nl2 As Long
l = ListView1.SelectedItem.Index
cle = Me.ListView1.ListItems(l).Key
Application.GoTo Range(cle), 1

' Recherche du film et positionnement sur la ligne dans la feuille
' Set c = [B:B].Find(TextBox2, , , 1)
' Application.GoTo Cells(c.Row, 1), 1
 

jecherche

XLDnaute Occasionnel
Re : Listview

Bonjour,

Pour Bebere ... voici ce que j'ai reproduis ... tu sauras sûrement améliorer le code de Maval :cool:



Jecherche
 

Pièces jointes

  • MavalListView(2).xlsm
    29.6 KB · Affichages: 32
Dernière modification par un modérateur:

Discussions similaires

Réponses
10
Affichages
468

Statistiques des forums

Discussions
314 203
Messages
2 107 178
Membres
109 773
dernier inscrit
sablin