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à...
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)
- Messages
- 4'100
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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