L'indice n'appartient pas à la selection

Bonjour,

Comme dans le titre, il y a ce message d'erreur qui apparaît sur la ligne de code indiquée et je ne vois pas du tout d'où viens le problème, pourriez-vous m'éclairer car j'ai cherché dans le forum mais je n'ai trouvé

24mouvemenrcave-v6.xlsm (243.57 Ko)

Feuille conso bouton nouvel inventaire

Bonjour,

après avoir vainement chercher une indication sur la ligne en cause, j'ai trouvé que Sheets(6) ne contient pas de ListObjects puisqu'il s'agit de la feuille Config.

Index de feuille à adapter donc.

A+

Merci pour cette réponse, mais je suis débutant et je ne sais pas comment faire

Bonjour,

Apprenez à bien utiliser les propriétés et méthodes de la classe ListObject, et à indenter correctement votre code, cela vous évitera des erreurs et facilitera la maintenance.

ci-dessous votre code révisé

Private Sub BtnEnregistrerConsoBar_Click()

    Dim DL As Integer
    Dim list_nombre As Integer
    Dim Ligne As Integer

    list_nombre = Me.ListBoxConsoBar.ListCount - 1

    If Me.ListBoxConsoBar.ListCount > 0 Then  'controle si la liste n'est pas vide
        If MsgBox("Voulez- vous enregistrer ces mouvements ?", vbYesNo) <> vbYes Then Exit Sub

        For Ligne = 0 To list_nombre

            With Range("TabListemouv").ListObject

                'Ajouter une nouvelle dans le tableau conso
                .ListRows.Add
                'Dernière ligne vide du tableau
                DL = .ListRows.Count

                'Ajouter les infos dans le tableau ??? écrasé par le paquet d'instructions suivantes
                'Sheets(6).Range("b" & DL) = Me.TxtDateConsoBar
                'Sheets(6).Range("c" & DL) = Me.CbxProduit
                'Sheets(6).Range("f" & DL) = Me.TxtDebutFrigo
                'Sheets(6).Range("g" & DL) = Me.TxtFinFrigo
                'Sheets(6).Range("h" & DL) = Me.TxtSortieCave

                'Ajouter  les donnée de la zone de liste
                .ListColumns("Date").DataBodyRange(DL) = Me.ListBoxConsoBar.List(Ligne, 0)
                .ListColumns("Produit").DataBodyRange(DL) = Me.ListBoxConsoBar.List(Ligne, 1)
                .ListColumns("Début").DataBodyRange(DL) = Me.ListBoxConsoBar.List(Ligne, 2)
                .ListColumns("Fin").DataBodyRange(DL) = Me.ListBoxConsoBar.List(Ligne, 3)
                .ListColumns("Sortie").DataBodyRange(DL) = Me.ListBoxConsoBar.List(Ligne, 4)

            End With

        Next Ligne

        MsgBox ("Les informations ont été enregistrées")
        Me.TxtDateConsoBar = ""
        Unload Me
        ThisWorkbook.Save

  End If

End Sub

NB: avec ce code, aucune référence à la feuille contenant le tableau structuré n'est nécessaire, le nom seul du tableau :

TabListemouv

est suffisant. De plus, le fait d'utiliser les noms de colonne rend votre code invariant si une nouvelle colonne est insérée dans votre tableau.

J'ai pas tout compris, mais je vous remercie beaucoup

Rechercher des sujets similaires à "indice appartient pas selection"