XL 2019 Erreur Impossible de définir la propriété list. Le type ne correspond pas

kevindu63

XLDnaute Nouveau
Bonjour,

J'ai une erreur que je n'arrive pas a trouver malgré toute les recherches,

sur la ligne

VB:
 .List(memoire, 0) = Me.ListBox1

message: Erreur d'exécution 2147352571 (80020005):
Impossible de définir la propriété list. Le type ne correspond pas.

VB:
Private Sub CommandButton1_Click()
If Me.Txt_nombre <> "" And Me.cbx_type.ListIndex >= 0 Then

    With Me.List_order
     .AddItem
         .List(memoire, 1) = Me.Cbx_article1
         '.List(memoire, 2) = Me.Txt_nombre
         '.List(memoire, 0) = Me.Cbx_test
         .List(memoire, 0) = Me.ListBox1
         .List(memoire, 2) = Me.ListBox2
 
 
  End With
 
 memoire = memoire + 1
 Me.Cbx_article1 = ""
  Me.Cbx_test = ""
  Me.Txt_nombre = ""
  Me.ListBox1 = ""
  Me.ListBox2 = ""

End If
End Sub



Je vous remercie d'avance
 

vgendron

XLDnaute Barbatruc
mémoire n'est toujours pas initialisé dans ton fichier;...

VB:
Private Sub CommandButton1_Click()
If Me.Txt_nombre <> "" And Me.cbx_type.ListIndex >= 0 Then
With Me.List_order
    .AddItem Me.Cbx_article1 'on créé la ligne
    memoire = .ListCount - 1 'numéro de la ligne
    
    .List(memoire, 1) = Me.Txt_nombre 'on rempli les éléments de la ligne ==1 = 2è colonne....
    '.List(memoire, 2) = Me.ListBox2
    .List(memoire, 3) = Me.Cbx_test
    '.List(memoire, 4) = Me.ListBox1

End With
 
    'memoire = memoire + 1
    Me.Cbx_article1 = ""
    Me.Cbx_test = ""
    Me.Txt_nombre = ""
    Me.ListBox1 = ""
    Me.ListBox2 = ""

End If
End Sub
 

vgendron

XLDnaute Barbatruc
quelques recommandations pour ton code

1) sur les formulaires;. donner des noms explicites aux différentes controles avec des préfixes indiquant la nature du control
Lbx_NomList === pour les listbox
Cbx_NomCombo==> Combobox
Txb_NomTexte==>Textbox
Cbn_NomBouton===> Commande bouton

2) indenter correctement le code, pas de saut de ligne supperflu
3) fermer "explicitement" les boucles for
for i=...
next i (au lieu d'un simple next)==> plus pratique pour s'y retrouver en case de boucles imbriquées

4) sur ton fichier excel: idem.. donner des noms aux différentes tables : Tab_BDD, Tab_Fournisseurs......
on peut travailler plus facilement dessus en vba avec "ListObjects"..


Je ne comprend le besoin des listbox 1 et 2 de ton formulaire...
 

vgendron

XLDnaute Barbatruc
autre suggestion.. plutot que des
Set ws_data = Worksheets(4),
quand on lit le code.. on ne sait pas de quelle feuille il s'agit..
dans l'explorateur du projet, je vois Feuil4 = "Mouvement de stock"
et ensuite.. quand je lis
For i = 6 To lstrw
Référence = ws_data.Cells(i, 2)

je me dis que ws_data.. c'est peut etre plutot la feuille "Article" ...

?? et donc;. c'est censé etre laquelle?
 

vgendron

XLDnaute Barbatruc
un exemple de ce que deviendrait ton initialize, si tu nommes la table de la feuille Article "Tab_Articles"

VB:
Private Sub UserForm_Initialize()
Dim ws_data As Worksheet
Dim lstrw As Long
Dim liste_valeur As String
Dim Référence As String
Dim Nom As String
Dim i
Dim j

Set ws_data = Worksheets(4)
Me.Label_info.Caption = Sheets("Config").Range("E21")
lstrw = ws_data.Cells(Rows.Count, 2).End(xlUp).Row
'liste_valeur = ""
ws_data.Activate 'juste pour etre sur qu'on travaille sur la bonne feuille

Me.Cbx_test.Clear
Me.Cbx_article1.Clear
With Sheets("Article").ListObjects("Tab_Articles")
    For i = 1 To .ListRows.Count
        Me.Cbx_test.AddItem .ListColumns("Référence").DataBodyRange(i)
        Me.Cbx_article1.AddItem .ListColumns("Nom").DataBodyRange(i)
    Next i
End With

''boucle
'For i = 6 To lstrw
'    Référence = ws_data.Cells(i, 2)
'    If InStr(liste_valeur, Référence) < 1 Then
'        Cbx_test.AddItem "" & Référence
'        If liste_valeur = "" Then
'            liste_valeur = Référence
'        Else
'            liste_valeur = liste_valeur & ";" & Référence
'        End If
'    End If
'
'    Set ws_data = Worksheets(4)
'    lstrw = ws_data.Cells(Rows.Count, 2).End(xlUp).Row
'    liste_valeur = ""
'
'    For j = 6 To lstrw
'        Nom = ws_data.Cells(i, 3)
'        If InStr(liste_valeur, Nom) < 1 Then
'            Cbx_article1.AddItem "" & Nom
'            If liste_valeur = "" Then
'                liste_valeur = Nom
'            Else
'                liste_valeur = liste_valeur & ";" & Nom
'            End If
'        End If
'    Next j
'Next i
End Sub
 

kevindu63

XLDnaute Nouveau
quelques recommandations pour ton code

1) sur les formulaires;. donner des noms explicites aux différentes controles avec des préfixes indiquant la nature du control
Lbx_NomList === pour les listbox
Cbx_NomCombo==> Combobox
Txb_NomTexte==>Textbox
Cbn_NomBouton===> Commande bouton

2) indenter correctement le code, pas de saut de ligne supperflu
3) fermer "explicitement" les boucles for
for i=...
next i (au lieu d'un simple next)==> plus pratique pour s'y retrouver en case de boucles imbriquées

4) sur ton fichier excel: idem.. donner des noms aux différentes tables : Tab_BDD, Tab_Fournisseurs......
on peut travailler plus facilement dessus en vba avec "ListObjects"..


Je ne comprend le besoin des listbox 1 et 2 de ton formulaire...
Je te remercie pour tout sait un peu le bazar car je test plein de choses pour que ça fonctionne !! Alor pour les listbox 1 et 2 sait un peux compliqué mais je voudrais que quand on sélectionne un article ça nous ajoute sa référence automatiquement dans le tableau et et même chose quand on sélectionne un article je voudrais que sa référence s'ajoute automatiquement dans le tableau
 

kevindu63

XLDnaute Nouveau
autre suggestion.. plutot que des
Set ws_data = Worksheets(4),
quand on lit le code.. on ne sait pas de quelle feuille il s'agit..
dans l'explorateur du projet, je vois Feuil4 = "Mouvement de stock"
et ensuite.. quand je lis
For i = 6 To lstrw
Référence = ws_data.Cells(i, 2)

je me dis que ws_data.. c'est peut etre plutot la feuille "Article" ...

?? et donc;. c'est censé etre laquelle?
Ah oui il faut que je regarde il y a peut-être un problème aussi ici à force de tout toucher je m'y suis perdu
 

vgendron

XLDnaute Barbatruc
je pense que tes listbox 1 et 2 ne servent à rien.. tu peux directement remplir la Listbox principale à partir de la selection des combobox

après.. pourquoi uniquement 5 colonnes sur cette liste principale.. vu qu'elle sert à remplir la table de la feuille "Mouvement de stock" ??

si je comprend bien.. dans le formulaire. tu prépares plusieurs mouvements (= plusieurs lignes dans la Listbox principale) et quand tu enregistres;. tu copies colle tout dans la feuille "Mouvement de stock"??
 

kevindu63

XLDnaute Nouveau
je pense que tes listbox 1 et 2 ne servent à rien.. tu peux directement remplir la Listbox principale à partir de la selection des combobox

après.. pourquoi uniquement 5 colonnes sur cette liste principale.. vu qu'elle sert à remplir la table de la feuille "Mouvement de stock" ??

si je comprend bien.. dans le formulaire. tu prépares plusieurs mouvements (= plusieurs lignes dans la Listbox principale) et quand tu enregistres;. tu copies colle tout dans la feuille "Mouvement de stock"??
Oui je pense qu'il y a une façon bien plus simple pour avoir ce résultat mais je n'ai pas trouvé le moyen d'y arriver et oui c'est bien ça je ne sais pas comment faire pour que quand je remplis la combobox référence ça m'ajoute le nom de l'article correspondant dans l'autre combobox c'est pour ça que je l'ai détourné avec des listbox
 

Discussions similaires

Réponses
3
Affichages
876
Réponses
17
Affichages
2 K

Statistiques des forums

Discussions
315 124
Messages
2 116 476
Membres
112 753
dernier inscrit
PUARAI29