Microsoft 365 ListBox vers TextBox – Impossible de lire la propriété List. Argument non valide

ExcLnoob

XLDnaute Occasionnel
Bonjour Le Forum,

Je viens vers vous car je suis totalement désespéré.

En effet, j’ai déroulé pas mal de code sur un de mes fichiers et arrivé au bout, je bloque...

Je n’arrive pas à reporter les valeurs des colonnes d’une ListBox dans les TextBox d’un Userform quand je double-clic sur une des lignes de la ListBox concernées.

Le message d’erreur :
1693920561734.png


Et ça bloque sur cette ligne :
1693920586545.png


Et quand je supprime celle-ci, le code déroule jusqu’à la fin mais rien n’apparait dans les TexBox de l’Userform4

Je soupçonne qu’il s’agisse d’une erreur dans l’événement Userform_Activate de l’Userform2 mais je n’arrive pas à savoir :
  • Si c’est vraiment le cas
  • Où cela peut bloquer
Pourriez-vous m’aider svp ? C’est la première fois que j’utilise une ListBox et je sèche totalement :(

Un grand Merci à vous.
 

Pièces jointes

  • Test.xlsb
    35.2 KB · Affichages: 3
Solution
Bonjour le Fil
Comme le dit Lolote83 que je salue, impossible d'entrer dans le Code.
Peut-être , une réponse en aveugle.
Une Ligne de ta ListBox Commence à la Colonne 0
Donc si tu as 8 colonnes par exemple
Tu auras les Colonnes de 0 à 7
A voir Donc
Jean marie

ChTi160

XLDnaute Barbatruc
Bonjour le Fil
Comme le dit Lolote83 que je salue, impossible d'entrer dans le Code.
Peut-être , une réponse en aveugle.
Une Ligne de ta ListBox Commence à la Colonne 0
Donc si tu as 8 colonnes par exemple
Tu auras les Colonnes de 0 à 7
A voir Donc
Jean marie
 

ExcLnoob

XLDnaute Occasionnel
Bonjour à tous 2, Bonjour le Forum,
Effectivement, je suis allé un peu vite en besogne et vous ai mis le fichier sans data perso mais avec les mdp....

Cela dit, j'ai effectivement pris en compte ta remarque @ChTi160 et ai fais les modifs en suivant et..... CA MARCHE !!!!
Merci beaucoup !!!

Je le saurai pour la prochaine fois... ;)

En PJ le fichier "ouvert" avec les modifs pour ceux qui veulent !
Soyez pas trop regardant sur les bout de code qui font plus une voiture bricolé qu'une Porsche, mais comme dirait l'autre, ça roule quand même...

Je mets le sujet en résolu et souligne votre efficacité !
Un GRAND MERCI !
 

Pièces jointes

  • Test1.xlsb
    38.6 KB · Affichages: 3

vgendron

XLDnaute Barbatruc
Hello

autre conseil:
tu aurais interet à utiliser les tables structurées pour présenter tes données
voir PJ
sinon, on est bien d'accord, ton fichier n'est pas encore abouti au niveau du code.. notamment le bouton "Valider" du 2eme formulaire ou bouton "Création items " du 1e formulaire

d'ailleurs, je ne comprend pas ce que le code de ce dernier est censé faire
 

Pièces jointes

  • Test1.xlsb
    31.1 KB · Affichages: 6
Dernière édition:

vgendron

XLDnaute Barbatruc
et pour illustrer ce que dit Chti60 (que je salue au passage)
pour charger la listbox
VB:
Private Sub UserForm_Activate()
    Dim plg As Range
    'Dim cw
    
    With Sheets("Lot").ListObjects("t_Lot")
        Set plg = .ListColumns(1).Range.Resize(, 8)
        plg.Columns.AutoFit
        ListBox1.Width = 20 + plg.Width
        Me.Width = ListBox1.Width + 20
    End With
            
    With Me.ListBox1
        .List = plg.Value
'        cw = ""
'        .ColumnCount = plg.Columns.Count
'        .RowSource = plg.Address
'        For I = 1 To .ColumnCount
'            cw = cw & plg.Columns(I).Width & ";"
'        Next I
'        .ColumnWidths = cw
'        .ListIndex = -1
    End With
End Sub
 

ExcLnoob

XLDnaute Occasionnel
Hello

autre conseil:
tu aurais interet à utiliser les tables structurées pour présenter tes données
voir PJ
sinon, on est bien d'accord, ton fichier n'est pas encore abouti au niveau du code.. notamment le bouton "Valider" du 2eme formulaire ou bouton "Création items " du 1e formulaire

d'ailleurs, je ne comprend pas ce que le code de ce dernier est censé faire
Bonjour @vgendron,
Effectivement je n'ai pas terminer le bouton "Valider" - En cours "d'étude" si on peut dire...

Pour ce qui est du bouton "Création d'items", dans le fichier final, il n'y aura qu'une seule ligne dans la feuille, préalablement sélectionnée dans une commande de plusieurs lignes d'un autre onglet.

Si l'utilisateur sélectionne une ligne de commande avec une quantité supérieure à 1 et veut "éclater" le lot (1 ligne Quantité 5 = 5 lignes), le seul moyen que j'ai trouvé est de copier la ligne sélectionnée dans une autre feuille (feuille "Lot" dans mon cas) et de proposer à l'utilisateur de créer des lignes supplémentaires et de pouvoir les modifier en double cliquant dans la ListBox (Sachant que certaines informations seront communes à toutes les lignes et d'autres liées à l'item créé/sélectionné - Ex : le numéro de série qui sera unitaire, l'origine sera commune)

Ce bouton copie donc la ligne selon le nombre d'item que l'utilisateur veut créer (et -1 pour qu'il prenne en compte la ligne existante de façon à ce que si l'utilisateur veut créer 5 items, 5 lignes soient créées et non pas 6)

Pour ce qui est des tableaux structurés, j'avais fait le test mais j'avais un problème au niveau de la copie des datas.
En effet, l'utilisateur réceptionne X commande par jour et via un autre bouton reporte les datas de la commande reçue. De ce fait, les datas précédentes doivent être forcément supprimé avant le report de la nouvelle commande et avec un tableau structuré, les nouvelles datas ne se mettaient pas en ligne 2 mais après la précédente commande (même si supprimée). A mon avis, une inversion dans le code...

Je vais travailler ça...
Merci du conseil et désolé pour le long texte...
 

ExcLnoob

XLDnaute Occasionnel
et pour illustrer ce que dit Chti60 (que je salue au passage)
pour charger la listbox
VB:
Private Sub UserForm_Activate()
    Dim plg As Range
    'Dim cw
   
    With Sheets("Lot").ListObjects("t_Lot")
        Set plg = .ListColumns(1).Range.Resize(, 8)
        plg.Columns.AutoFit
        ListBox1.Width = 20 + plg.Width
        Me.Width = ListBox1.Width + 20
    End With
           
    With Me.ListBox1
        .List = plg.Value
'        cw = ""
'        .ColumnCount = plg.Columns.Count
'        .RowSource = plg.Address
'        For I = 1 To .ColumnCount
'            cw = cw & plg.Columns(I).Width & ";"
'        Next I
'        .ColumnWidths = cw
'        .ListIndex = -1
    End With
End Sub
J'ai bien testé ton code. cela fonctionne mais j'ai un décalage dans le fichier final.
Les datas ne se mettent pas sur la même ligne
Je vais investiguer et si besoin je reviendrai vers vous avec le fichier final directement, pour avoir une vision d'ensemble.
Merci beaucoup pour le coup de main !!
 

Statistiques des forums

Discussions
312 206
Messages
2 086 222
Membres
103 158
dernier inscrit
laufin