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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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...
 
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?
 
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
 
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
 
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
 
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"??
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
599
Réponses
17
Affichages
2 K
Réponses
68
Affichages
8 K
Retour