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. 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
    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. 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
          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. 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
              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