XL 2007 Récupérer la valeur sélectionner d'un ListView dans un TextBox

Chri8Ed

XLDnaute Occasionnel
Bonjour à tous

J'ai un ListView qui me permet de transcrire dans une cellule la valeur sélectionnée
Pour une autre utilisation de cet ListView, je souhaiterais récupérer cette valeur dans un TextBox au lieu de la transcrire dans une cellule

J'ai essayé de remplacer
ActiveCell = li par TextBox1.value = li

Et pas mal d'autres choses ....
Mais rien à faire

Je viens donc chercher de l'aide

Merci d'avance

Code:
Private Sub UserForm_Initialize()
  Dim C As Range
      With Lv
        With .ColumnHeaders
            .Clear
            .Add , , "Boite", 120
            .Add , , "Type", 130
            .Add , , "", 50, lvwColumnRight
        End With
       End With
  For Each C In Feuil5.Range("A1", Feuil5.[A65000].End(xlUp)(1))
    Lv.ListItems.Add , , C
    Lv.ListItems(Lv.ListItems.Count).ForeColor = C.Interior.Color
    Lv.ListItems(Lv.ListItems.Count).ListSubItems.Add , , C(1, 2)
    Lv.ListItems(Lv.ListItems.Count).ListSubItems(1).ForeColor = C.Interior.Color
    Lv.ListItems(Lv.ListItems.Count).ListSubItems.Add , , Replace(Format(C(1, 3), "0.00"), ",", ".")
    Lv.ListItems(Lv.ListItems.Count).ListSubItems(2).ForeColor = C.Interior.Color
  Next
End Sub



' ------ Tri lors de la sélection d'une colonne ----------

Private Sub Lv_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
    Lv.Sorted = False
    Lv.SortKey = ColumnHeader.Index - 1
   
    If Lv.SortOrder = lvwAscending Then
        Lv.SortOrder = lvwDescending
        Else
        Lv.SortOrder = lvwAscending
    End If
   
    Lv.Sorted = True
End Sub

Private Sub Lv_ItemClick(ByVal li As MSComctlLib.ListItem)
  Dim t$, Col As Byte
 
  t = Left(li, 1)
    'Col = IIf(T = "B" Or T = "P" Or T = "V" Or T = "N" Or T = "H", 5, 3)
  Col = 4 '2 au lieu de 5 ou 3
   
  ActiveCell.Resize(1, 1).Interior.ColorIndex = xlNone  '.Resize(1, 1) au leiude .Resize(1, 5)
  If li = "" Then Unload Me: Exit Sub

  If Not Left(li, 1) = "C" Then ActiveCell.Resize(1, 1).Interior.Color = Lv.ListItems(li.Index).ForeColor
  '.Resize(1, 1) au lieu de .Resize(1, 2)
  ' Pas de mise en couleur si le code commence par la lettre C.
 
  ActiveCell = li 'Recopie du code
  'ActiveCell(1, 2) = Lv.ListItems(li.Index).ListSubItems(1) 'Recopie du libellé
  ActiveCell.Interior.Color = Lv.ListItems(li.Index).ForeColor '???
 
    If Left(li, 1) = "Z" Then
    ActiveCell(1, 1).Select
    Libellé.Show
    Unload Me
    Exit Sub
    End If
   
    If li = "Divers" Then
    ActiveCell(1, 1).Select
    ListView_Codes_Bte2.Show
    Unload Me
    Exit Sub
    End If
   
    If li = "Spécial" Then
    ActiveCell(1, 1).Select
    ListView_Codes_Bte3.Show
    Unload Me
    Exit Sub
    End If
   
    If li = "Saisie" Then
    ActiveCell(1, 1).Select
    Libellé.Show
    Unload Me
    Exit Sub
    End If
   
    If li = "Marg." Then
    ActiveCell(1, 1).Select
    Libellé_Margarine.Show
    Unload Me
    Exit Sub
    End If
   
 
  'ActiveCell(1, Col) = Lv.ListItems(li.Index).ListSubItems(2)
 
  'ActiveCell(1, 3) = Lv.ListItems(li.Index).ListSubItems(2) 'Ancien code
     
      If Not Lv.ListItems(li.Index).ListSubItems(2) = "" Then
        ActiveCell(1, Col).NumberFormat = "0.00"
        ActiveCell(1, Col) = (Lv.ListItems(li.Index).ListSubItems(2))
      End If
 
  ActiveCell(1, Col).Select
  Unload Me
End Sub



Private Sub UserForm_Activate()
Me.Top = 46
Me.Left = 514
End Sub
 

BOISGONTIER

XLDnaute Barbatruc
Bonjour;

Exemple

Code:
Private Sub ListView1_Click()
  Me.TextBox1 = ListView1.SelectedItem
  For k = 2 To NbCol
    Me("textbox" & k) = ListView1.SelectedItem.ListSubItems(k - 1).Text
  Next k
  Me.Enreg = ListView1.SelectedItem.ListSubItems(NbCol).Text
End Sub
Boisgontier
 

Fichiers joints

Chri8Ed

XLDnaute Occasionnel
Bonjour et merci Boisgontier

Ton exemple m'a ouvert l'esprit
Du coup j'ai trouvé la réponse qui était très simple
Il fallait mettre : TextBox1.Text = li

A+
 

Discussions similaires


Haut Bas