Selection d'un subitem dans differentes colonnes

Résolu
Bonjour,

avec ce code je peux contrôler les subitems de la colonne 1 seulement
mais je souhaiterais contrôler aussi les subitems des colonnes 3 et 5
exemple
60000 xxxx 70000 yyyyy 80000 zzzzzz
comment puis je procéder pour contrôler 80000 qui s trouve dans la colonne 3 avec une variable dans .listsubitem()

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim i As Integer, LaValeur As String
  Me.TextBox11 = ""

     i = Me.ListView1.SelectedItem.Index
     LaValeur = ListView1.ListItems(i).ListSubItems(1).Text
     
     If Left(LaValeur, 1) <> "6" Then
        ListView1.ListItems(i).Selected = False
        Set ListView1.SelectedItem = Nothing
        Me.TextBox11 = ""
        MsgBox "erreur"
     Else
        Me.TextBox11 = LaValeur
     End If

       
End Sub

merci pour votre aide

6 réponses

  1. Contributeur
    Bonjour,

    Comme ceci:

    Private Sub ListView1_Click()
    Dim i As Integer
    With Me.ListView1
    i = .SelectedItem.Index
    MsgBox .ListItems(i).ListSubItems(3).Text 'remplacer MsgBox par variable
    MsgBox .ListItems(i).ListSubItems(5).Text
    End With
    End Sub
    

    1. Bonsoir cs_lepivert

      je me suis sans doute mal exprimé.
      je voudrais que quand je clique par erreur sur un item de la ligne sélectionnée
      je puisse recliquer sur un autre subitem de cette colonne ou d'une autre colonne
      je voudrais que le numéro de colonne soit une variable et non entrée en dur
      comme dans mon code ici colonne 1
      LaValeur = ListView1.ListItems(i).ListSubItems(1).Text

      est ce possible

      merci cs_lepivert

      ps je tarde à répondre car je ne reçois très très en retard info sur mon mail
      m'indiquant qu'une réponse a été apportée à mon fil
      1. Contributeur
        Voici un exemple avec 10 colonnes et 10 TextBox, a adapter:

        Private Sub ListView1_Click()
        Dim l, c
        With Me.ListView1
        l = .SelectedItem.Index
        TextBox1 = .ListItems(l).Text
        For c = 1 To 10
        Me("TextBox" & c + 1) = .ListItems(l).ListSubItems(c).Text
        Next c
        End With
        End Sub

        1. Bonjour Le pivert

          Private Sub ListView1_Click()
          Dim i, c
          
          With Me.ListView1
          
               i = .SelectedItem.Index
          
               For c = 1 To 5 Step 2
          
                 lavaleur = .ListItems(i).ListSubItems(c).Text
                 TextBox11 = lavaleur
               Next c
          
          End With
          End Sub


          je boucle bien sur mes trois colonnes mais je ne sais pas comment
          stopper ma boucle lorsque c'est le listsubitems de la colonne 2 ou 3 qui m'intéresse et que je veux conserver dans ma texbox11,, malgré l'exemple que tu m'a donné,

          je suis vraiment nul

          merci
          1. Contributeur
            Une autre approche, tu sélectionnes ta ligne et ensuite l'entête de la colonne du SubItem:

            Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
              Dim L As Long, Col As Byte, C As Range
              L = ListView1.SelectedItem.Index + 2: Col = ColumnHeader.Index
            MsgBox Cells(L, Col) 'changer pour une variable
            End Sub

            1. Bonsoir le_pivert

              je me suis remis au turbin ce soir et ai trouvé une solution.
              j'ai bien conscience que c'est vraiment du travail d'amateur
              mais cela fonctionne avec le résultat escompté

              Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
              
              Dim i As Integer, mavaleur As String
              Me.TextBox11 = ""
              
              Dim i As Integer, mavaleur As String
              Me.TextBox11 = ""
                 
              With Me.ListView1
                  i = .SelectedItem.Index
                  If CheckBox1.Value = True Then
                     mavaleur = .ListItems(i).ListSubItems(1).Text
                     TextBox11.Value = mavaleur
                     
                     If MsgBox("Est ce que ce code est bon?" & Chr(13), vbYesNo + vbQuestion, "Demande de confirmation") = vbNo Then
                       ListView1.ListItems(i).Selected = False
                       Set ListView1.SelectedItem = Nothing
                       Me.TextBox11 = ""
                       MsgBox "Vérifier la rubrique" & Chr(13) & "Ou vérifier votre liste de codes" & Chr(13) & "Ou prendre le code le plus approprié", vbOK + vbInformation, "Demande de vérification"
                       Else
                          MsgBox "Parfait"
                     End If
                    Exit Sub
                 End If
                 If CheckBox1.Value = False Then
                     mavaleur = .ListItems(i).ListSubItems(3).Text
                     TextBox11.Value = mavaleur
                     MsgBox mavaleur
                    If MsgBox("Est ce que ce code est bon?", vbYesNo + vbQuestion, "Demande de confirmation") = vbNo Then
                       ListView1.ListItems(i).Selected = False
                       Set ListView1.SelectedItem = Nothing
                       Me.TextBox11 = ""
                     Else
                     MsgBox "Parfait"
                     End If
                    Exit Sub
                 End If
                     
                End With
              End Sub