Impossible de définir la propriété list valeur de propriété non valide

bonjour,

lorsque j'execute mon vba au moment ou il rempli une liste il bug sur les 3 derières lignes...

voici le code

Sub controle()

    Dim source As Range
    Dim dest As Variant
    Dim index_row As Integer
    Dim index_row_dest As Integer
    Dim op As String
    Dim controleur As String
    Dim date_controle As Date
    Dim numcmd As String
    Dim vol As Currency
    Dim mel As Currency
    Dim qtéctrl As Integer
    Dim qtémauv As Integer
    Dim typdef As String
    Dim obs As String
    Dim c30 As String
    Dim c100 As String
    Dim c1000 As String

    Set source = Sheets("Controle").Range("Tableaucontrole")
    Set dest = Me.L_controle

    dest.Clear
    dest.ColumnCount = 14
    index_row_dest = 0

    ' on lit les filtres
    'machine_filtre = Me.C_filtremach.Value
    'datemois_intervention_filtre = Me.C_filtredatemois.Value
    'dateannée_intervention_filtre = Me.C_filtredateannée.Value
    'type_intervention_filtre = Me.C_filtretypeinter.Value
    'intervenant_filtre = Me.C_filtreinter

    'conversion des mois lisible en vba
     '       If datemois_intervention_filtre <> "" Then
      '          If datemois_intervention_filtre > 0 And datemois_intervention_filtre < 10 Then
       '                 datemois_intervention_filtre = "0" & datemois_intervention_filtre
        '        End If
         '   End If

    ' on lit la source
    For index_row = 1 To source.Rows.Count
        date_controle = Format(source.Cells(index_row, 1))
        controleur = source.Cells(index_row, 2)
        numcmd = source.Cells(index_row, 3)
        vol = source.Cells(index_row, 4)
        mel = source.Cells(index_row, 5)
        op = source.Cells(index_row, 6)
        qtéctrl = source.Cells(index_row, 7)
        qtémauv = source.Cells(index_row, 8)
        typdef = source.Cells(index_row, 9)
        obs = source.Cells(index_row, 10)
        c30 = source.Cells(index_row, 11)
        c100 = source.Cells(index_row, 12)
        c1000 = source.Cells(index_row, 13)

        ' si  tous les critères sont bons, on ajoute une ligne à la listbox

            dest.AddItem
            dest.List(index_row_dest, 0) = date_controle
            dest.List(index_row_dest, 1) = controleur
            dest.List(index_row_dest, 2) = numcmd
            dest.List(index_row_dest, 3) = vol
            dest.List(index_row_dest, 4) = mel
            dest.List(index_row_dest, 5) = op
            dest.List(index_row_dest, 6) = qtéctrl
            dest.List(index_row_dest, 7) = qtémauv
            dest.List(index_row_dest, 8) = typdef
            dest.List(index_row_dest, 9) = obs
            dest.List(index_row_dest, 10) = c30
            If c100 <> "" Then
            dest.List(index_row_dest, 11) = c100
            End If

            If c1000 <> "" Then
            dest.List(index_row_dest, 12) = c1000
            End If

            index_row_dest = index_row_dest + 1

    Next index_row

End Sub

Salut b.vincent,

Alors avec le fichier ce serait mieux, mais à vue d’œil je dirais que cette ligne peux être l'une des causes de tes soucis :

index_row_dest = index_row_dest + 1

Tu a initialisé une Boucle de type For donc tu n'a pas besoin de demandé à rajouté +1 à ta variable

Avec ta ligne, tu lui rajoute un +2 avant de passer au Next

Supprime donc cette ligne, et reviens vers nous

oups je pensais avoir mis le fichier

quand je supprime les 5 dernières lignes du remplissage de la list ça fonctionne je ne pense pas que le soucis vienne de là...

10classeur1.xlsm (502.41 Ko)

b.Vincent,

Supprime ou modifie ces lignes :

dest.List(index_row_dest, 10) = c30
If c100 <> "" Then
dest.List(index_row_dest, 11) = c100
End If

If c1000 <> "" Then
dest.List(index_row_dest, 12) = c1000
End If

index_row_dest = index_row_dest + 1

Puis lance ton UserForm et tu verra qu'elle se génère.

Je sais pas si le résultat affiché est le résultat escompté mais bon :<

Le problème viens de ces lignes pour sur

oui vu que cela provenais de ces lignes mais il me faut ces informations

Comment modifier ces lignes je les trouve bien écrites...

je ne vois pas pourquoi ça ne fonctionne pas.

Alors pour te dire "comment écrire ces lignes" il faudrait que je comprenne comment ton fichier tourne et ce que tu veux mettre à l'intérieur :0

Et ton fichier est un peu trop costaud pour que je me plonge dedans x)

Bonjour,

je ne vois pas pourquoi ça ne fonctionne pas.

Tout simplement parce que un chargement par la méthode "Additem" est limitée à 10 colonnes.

Si tu veux charger 14 colonnes, il faut alors utiliser la méthode "List", d'ailleurs beaucoup plus rapide que la méthode "Additem"

Ce code devrait suffire pour afficher l'ensemble du tableau:

Sub controle()

    Dim source As Object

    Set source = Sheets("Controle").ListObjects(1)
    L_controle.ColumnCount = 14
    L_controle.List = source.DataBodyRange.Value

End Sub

Si besoin de sélectionner des lignes du tableau, utiliser alors ce code :

Sub controle()

    Dim source As Object
    Dim i As Integer, j As Integer, liste()

    Set source = Sheets("Controle").ListObjects(1)
    j = 0
    For i = 1 To source.ListRows.Count
        ReDim Preserve liste(j)
        liste(j) = source.DataBodyRange.Rows(i).Value
        j = j + 1
    Next i

    L_controle.ColumnCount = 14
    If UBound(liste) = 0 Then L_controle.List = liste(0) _
    Else L_controle.List = Application.Transpose(Application.Transpose(liste))

End Sub
Rechercher des sujets similaires à "impossible definir propriete list valeur valide"