XL 2013 Chargement et déchargement listbox

flo189

XLDnaute Occasionnel
Bonjour à tous,

Je souhaiterais afficher dans une listbox les différentes lignes de ma colonne D du fichier ci-joint "En attente de départ" dans l'userform1.

Mon objectif est de pouvoir sélectionner plusieurs commandes (ligne du fichier) pour décharger la même date d'expédition et le même numéro de container sur chaque ligne du fichier

Attention je ne veux pas afficher dans la listbox les commandes déjà expédiés. Pour cela, j'ai inséré une formule pour ne rien afficher si la commande a été expédiée.


Une fois que j'aurais sélectionner les lignes dans la listbox, à l'aide du bouton valider de l'userform, je veux décharger pour toutes les lignes sélectionnées dans la listbox :
- la date d'expédition en colonne E
- le numéro container en colonne F

Mon fichier ci-joint.

En espérant que quelqu'un pourra m'aider.

Merci à tous.
 

Pièces jointes

  • test.xlsm
    17.9 KB · Affichages: 70
  • test.xlsm
    17.9 KB · Affichages: 42

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonjour flo189,

Quand tu dis "afficher dans une listbox les différentes lignes de ma colonne D", ça veut dire concrètement qu'ici, tu obtiendrais dans ta ListBox:
DE / PO
RE / MO
FE / NO
RE / MO
FE / NO
Qu'est-ce qui va permettre de distinguer l'enregistrement figurant en 3[SUP]e[/SUP] position, de celui en 5[SUP]e[/SUP] position?

Ce que tu voudrais faire n'est pas très clair pour quelqu'un qui "débarque" dans ton fichier ... tu pourrais expliquer de manière un peu plus détaillée? Dans ton fichier lui-même rien ne permet non plus de différencier tes commandes. Tu as "élagué" pour nous fournir une version "épurée" :confused:
 

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Bonjour Modeste,

Tout d'abord merci pour ta réactivité.

Je m'explique un peu mieux.

Mon objectif est d'avoir un visuel de mon stock. Les commandes arrivent sur mon entrepôt et partent ensuite par container à l'export.
De ce fait je veux regrouper toutes les commandes qui partent par container pour leur attribuer la même date et le même numéro de container.
J'ai vu qu'il était possible de faire cela via une listbox à choix multiple.
Effectivement, j'ai un peu élagué le fichier, je distingue mes commandes via une référence commande. J'ai complété mon fichier ci-joint.

Merci pour ton aide précieuse.
 

Pièces jointes

  • test.xlsm
    33.4 KB · Affichages: 52
  • test.xlsm
    33.4 KB · Affichages: 49

thebenoit59

XLDnaute Accro
Re : Chargement et déchargement listbox

Bonjour flo189, bonjour Modeste.

Je te joins en fichier une idée d'optimisation.
J'ai supprimé la TextBox1 pour la date et l'ai remplacé par un DTPicker, ce qui sera plus utile pour toi.
Je suis partie sur une idée différente de la tienne de base.
J'alimente la ListBox avec un les clés d'un Dictionary, les items correspondants aux numéros de lignes.
Quand on boucle les éléments sélectionnés de la ListBox, on enregistre dans un second Dictionary les éléments en recherchant l'item du 1er Dico (son numéro de ligne)
Une fois fait j'appelle la procédure pour Ajouter les valeurs en colonne E et F.
 

Pièces jointes

  • flo189 - Chargement et déchargement listbox.xlsm
    35.3 KB · Affichages: 64
  • flo189 - Chargement et déchargement listbox.xlsm
    35.3 KB · Affichages: 69

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Re,

Je m'explique un peu mieux
C'est le "un peu" qui est important dans la phrase :eek:

Voyons si je peux exprimer les choses autrement:
  • À l'affichage de ton UserForm, la listBox devrait contenir la liste des enregistrements pour lesquels une date d'expédition n'est pas déjà renseignée en colonne E (de ton dernier fichier). Jusque là, c'est correct?
  • L'idée serait ensuite d'indiquer une date et un n° de container dans les 2 zones de texte du UserForm, de sélectionner ensuite une série d'items dans la ListBox. Pour tous les enregistrements sélectionnés dans la listBox, la date et le n° de container seraient copiés en colonnes E et F? Est-ce toujours correct (ou me suis-je perdu en route?)


Ma question de tout à l'heure demeure: quand j'affiche ton UserForm, la listBox est remplie de "MO", "NO" et "PO" ... Comment savoir si je dois sélectionner le 3e ou le 4e "MO", puisque je ne sais pas à quelle "commande" cette mention correspond, dans la feuille de calcul? Ou alors, la source était à prendre en colonne D?

Dans l'initialisation de ton USF, tu fais une première boucle pour garnir ta liste, puis une seconde pour désélectionner les items éventuellement sélectionnés (mais comment certains pourraient-ils l'être, puisque tu viens de garnir ta liste?)

Et bing ... thebenoît59 aurait-il mieux compris?
 

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Benoit,

Merci pour ton aide je pense que j'ai un problème de compatibilité. J'ai un bug de compilation et ne parviens pas à voir le résultat.

Modeste,
tu as parfaitement compris les deux points.

Pour le point :
Comment savoir si je dois sélectionner le 3e ou le 4e "MO", puisque je ne sais pas à quelle "commande" cette mention correspond, dans la feuille de calcul? Ou alors, la source était à prendre en colonne D?
Sur mon dernier fichier joint, j'ai rajouté le numéro de référence commande aux champs concatené sur la colonne D, ce qui donne des champs unique du style :
AD2 RE/MO
AD3 FE/NO
AD4 DE/PO
AD5 RE/MO

Encore merci pour votre aide.
 

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonsoir,

Je laisse à thebenoit59 le soin d'adapter son code: je ne voudrais pas en trahir l'esprit.
En adaptant ton code de départ, ceci semble fonctionner, pour autant:
  • que la ListBox1 soit définie en multiselect
  • qu'elle contienne 2 colonnes (je stocke le n° de ligne dans la seconde). Largeurs des colonnes à définir, par exemple, à 150 et 30 pts. La seconde peut être masquée par la suite: c'est juste pour que tu voies

Attention, il conviendra d'ajouter des contrôles: est-ce une date dans TextBox1? TextBox2 est-elle bien renseignée? etc.

Remplacer les 2 Sub existantes par celles-ci:
VB:
Private Sub UserForm_Initialize()
Dim i As Long, Derlig As Long, cpt As Long
'ListBox1.Clear

Derlig = Sheets("Feuil1").Cells(65536, 3).End(xlUp).Row
cpt = 0
For i = 2 To Derlig
    If Cells(i, 4) <> "" Then
        ListBox1.AddItem Cells(i, 4).Value
        ListBox1.List(cpt, 1) = i
        cpt = cpt + 1
    End If
Next i
End Sub

Private Sub CommandButton1_Click()
Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) = True Then
            Cells(ListBox1.List(i, 1), 5) = CDate(TextBox1)
            Cells(ListBox1.List(i, 1), 6) = CLng(TextBox2)
        End If
    Next i
Unload UserForm1
End Sub
J'ai modifié le type de certaines données ... à toi de voir.

Arff on se télescope aujourd'hui! :rolleyes:
 

thebenoit59

XLDnaute Accro
Re : Chargement et déchargement listbox

Bonjour Modeste, bonjour flo189.

Effectivement Modeste, nous nous sommes beaucoup télescopés sur ce fil :).

Flo, si tu ne parviens pas à choisir plusieurs lignes c'est que tes propriétés de ListBox ne sont pas les bonnes.
Je te laisse chercher un peu.

Par ailleurs je t'envoie une nouvelle proposition en ajoutant, comme émis par Modeste, une vérification du format de la date et la vérification du remplissage des deux TextBox.
 

Pièces jointes

  • flo189 - Chargement et déchargement listbox.xlsm
    33.4 KB · Affichages: 61
  • flo189 - Chargement et déchargement listbox.xlsm
    33.4 KB · Affichages: 55

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

The benoit,

C'est top, dans ma listbox je parviens bien à sélectionner plusieurs lignes.

Par contre je ne comprends pas pourquoi il ne décharge pas la date et le numéro de container sur toutes les lignes sélectionnées.
La macro bloque à ce niveau la : la bibliothèque est introuvable :(
If dExp <> Format(dExp, "dd/mm/yyyy")

Encore merci de ta patience...
 

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonsoir flo189,
Salut au(x) Bruxellois :)

@flo189: dans l'Éditeur vba, menu Outils > Références... regarde si tu n'aurais pas une références notée comme MANQUANTE. Si oui, décoche-la simplement et essaye à nouveau.

(je regarde vite si thebenoit59 n'est pas dans les parages, pour ne plus lui écraser les orteils ... pas connecté ... allez, j'envoie!)
 

Discussions similaires

Réponses
18
Affichages
756

Statistiques des forums

Discussions
312 493
Messages
2 088 950
Membres
103 989
dernier inscrit
jralonso