Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Sql et VBA erreur sur liste

Sujet résolu
    16 novembre 2017 à 21:14:41

    Salut à tous !

    J'ai beau regarder je ne trouve pas mon erreur dans mon code !

    J'obtiens cette erreur : Impossible de définir la propriété List. Index de table de propriétés non valide.

    Le but du code et de l'userform est de faire une recherche dans une table de donnée et d'afficher les résultats dans une liste multicolonnes. Mais c'est l'affichage dans la liste que je n'arrive pas à faire...

    Voici le code :

    Private Sub TextBox8_Change()
    
    ListBox1.Clear
    
    Set bds = OpenDatabase(ThisWorkbook.Path & "\outillages.mdb")
    Set re = bds.OpenRecordset("SELECT * FROM Machines;")
    
    If re.RecordCount <> 0 Then ' Enregistrement trouvé
        i = 0
        While Not re.EOF
            If re.Fields(combo_crit.ListIndex + 1) Like TextBox8.Value & "*" Then
                If Not TextBox8.Value = "" Then
                    ListBox1.AddItem
                    ListBox1.List(i, 1) = re.Fields(1)
                    ListBox1.List(i, 2) = re.Fields(2)
                    ListBox1.List(i, 3) = re.Fields(3)
                    ListBox1.List(i, 4) = re.Fields(4)
                End If
                
            End If
                               
            i = i + 1
            re.MoveNext
        Wend
    Else
        MsgBox ("erreur")
        
    End If
    
    
    End Sub

    Si vous avez des infos je suis preneur...

    -
    Edité par Dev0 26 novembre 2017 à 14:43:36

    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2017 à 19:05:14

      UP ? personne ? :p (Même un prof n'a pas su.. )
      • Partager sur Facebook
      • Partager sur Twitter
        26 novembre 2017 à 7:15:34

        Bonjour,

        Quelle est la valeur de la propriété ListCount du contrôle ListBox1 ?

        C'est vraisemblablement cette propriété que tu as oubliée. Dans ton cas sa valeur doit être à 5 et si tu avais ajouté un argument à la méthode AddItem (voir exemple ci-dessous) tu aurais au moins vu la première colonne

        ListBox1.AddItem re.Fields(0)



        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2017 à 14:46:59

          Salut et merci pour ta réponse !

          Je ne saisi pas ta réponse, ListCount indique le nombre de ligne dans ma listbox. Or ici le nombre de ligne est défini par ma recherche. Le recordset parcourt la table et lorsque mes conditions sont respectées, on ajoute les valeurs de l'entrée de la base de donnée dans la liste. A propos de la méthode AddItem, j'ai effectivement pour habitude d'ajouter un argument. Mais j'ai pu trouver des exemples d'affichage multicolonnes sur le net, où c'était codé de cette façon...

          • Partager sur Facebook
          • Partager sur Twitter
            26 novembre 2017 à 16:12:02

            Bonjour,

            Désolé, je devais être distrait au moment où j'ai écrit ma réponse. C'est la propriété ColumnCount dont il faut mettre la valeur à 5

            J'ai fait le test avec une de mes base de données et cela fonctionne.

            "A propos de la méthode AddItem, j'ai effectivement pour habitude d'ajouter un argument. Mais j'ai pu trouver des exemples d'affichage multicolonnes sur le net, où c'était codé de cette façon..."

            Exemple

                        If Not TextBox8.Value = "" Then
                           ListBox1.AddItem re.Fields(0)
                           ListBox1.List(i, 1) = re.Fields(1)
                           ListBox1.List(i, 2) = re.Fields(2)
                           ListBox3.List(i, 3) = re.Fields(3)
                           ListBox4.List(i, 4) = re.Fields(4)
                        End If
            



            • Partager sur Facebook
            • Partager sur Twitter
              28 novembre 2017 à 20:11:58

              Toujours la même chose avec ce code....

              ListBox1.ColumnCount = 4
              ListBox1.ColumnWidths = "70"
              
              If re.RecordCount <> 0 Then ' Enregistrement trouvé
                  i = 0
                  While Not re.EOF
                      If re.Fields(combo_crit.ListIndex + 1) Like "*" & TextBox8.Value & "*" Then
                          If Not TextBox8.Value = "" Then
                              ListBox1.AddItem (re.Fields(0))
                              ListBox1.List(i, 1) = re.Fields(1)
                              ListBox1.List(i, 2) = re.Fields(2)
                              ListBox1.List(i, 2) = re.Fields(3)
                              ListBox1.List(i, 3) = re.Fields(4)
                              

              je ne comprends pas x)

              • Partager sur Facebook
              • Partager sur Twitter
                1 décembre 2017 à 20:51:09

                Salut ! Je viens d'essayer ce bout de code très simple, mais cela ne fonctionne pas chez moi, toujours la même erreur... c'est dingue !

                Private Sub CommandButton1_Click()
                
                ListBox1.ColumnCount = 4
                ListBox1.ColumnWidths = 70
                
                Dim i As Integer
                
                For i = 1 To 5
                
                    ListBox1.List(i, 1) = "toto" & Str(i)
                    ListBox1.List(i, 2) = "tata" & Str(i)
                    ListBox1.List(i, 3) = "tutu" & Str(i)
                    ListBox1.List(i, 4) = "titi" & Str(i)
                Next i
                
                
                End Sub

                Personne n'a d'idée ?...

                -
                Edité par Dev0 1 décembre 2017 à 20:51:39

                • Partager sur Facebook
                • Partager sur Twitter

                [VBA] Sql et VBA erreur sur liste

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown