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

Si...

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

re

Re-bonjour,
À mon humble avis, 9 chances sur 10 que ce soit lié au DtPicker. plutôt risques ;)

Avec, au clic, un calendrier personnel pour éviter ceux qui ne sont pas installés et une saisie numérique sans message d'erreur.
En dehors de cela, il y a beaucoup de points communs avec la proposition du modeste Luc:D.
 

Pièces jointes

  • Listbox dégressive(UsF).xlsm
    53.1 KB · Affichages: 60

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Merci à vous deux c'est exactement ce que je voulais faire.

Par contre mes compétences sont limitées, je ne parviens pas à adapter ce modèle à mon cas.
J’ai copié vos codes sur mon fichier ci-joint final en essayant de les adapter à mon cas. Mais résultat non concluant.
Je vous sollicite une dernière fois, promis.

L'userform1 est sur ma feuille stock via le bouton "Sortie Stock".

Même cas que mes problématiques précédentes.
Je veux afficher sur la listbox les lignes de la colonne O qui correspond à mes commandes.

Je veux décharger :
- Sur la feuille stock:
Par rapport aux lignes de la listbox1 sélectionnées :
La textbox1 N° container dans la colonneN
La textbox2 qui correspond à ma date d'éxpédition dans la colonne M


Aussi sur la feuille facturation :

Je souhaiterais décharger au fur et à mesure (à la suite des champs) en fonctions des commandes sélectionner dans la listbox1

textbox1 en colonne A à partir de la ligne 4
Toutes Les lignes sélectionnées en colonne B à partir de la ligne 4
La textbox 2 (qui correspond à ma date d'expédition) en colonne D
textbox 8 en colonne H
textbox9 en colonne I
textbox10 en colonne J
textbox11 en colonne K
textbox13 en colonne L

Je sais que j'en demande beaucoup mais je suis vraiment bloqué :(

Un gros merci pour votre aide.
 

Pièces jointes

  • Projet.xlsm
    107.5 KB · Affichages: 45
  • Projet.xlsm
    107.5 KB · Affichages: 49

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Merci à vous deux c'est exactement ce que je voulais faire.

Par contre mes compétences sont limitées, je ne parviens pas à adapter ce modèle à mon cas.
J’ai copié vos codes sur mon fichier ci-joint final en essayant de les adapter à mon cas. Mais résultat non concluant.
Je vous sollicite une dernière fois, promis.

L'userform1 est sur ma feuille stock via le bouton "Sortie Stock".

Même cas que mes problématiques précédentes.
Je veux afficher sur la listbox les lignes de la colonne O qui correspond à mes commandes.

Je veux décharger :
- Sur la feuille stock:
Par rapport aux lignes de la listbox1 sélectionnées :
La textbox1 N° container dans la colonneN
La textbox2 qui correspond à ma date d'éxpédition dans la colonne M


Aussi sur la feuille facturation :

Je souhaiterais décharger au fur et à mesure (à la suite des champs) en fonctions des commandes sélectionner dans la listbox1

textbox1 en colonne A à partir de la ligne 4
Toutes Les lignes sélectionnées en colonne B à partir de la ligne 4
La textbox 2 (qui correspond à ma date d'expédition) en colonne D
textbox 8 en colonne H
textbox9 en colonne I
textbox10 en colonne J
textbox11 en colonne K
textbox13 en colonne L

Je sais que j'en demande beaucoup mais je suis vraiment bloqué :(

Un gros merci pour votre aide.
 

Pièces jointes

  • Projet.xlsm
    107.5 KB · Affichages: 42
  • Projet.xlsm
    107.5 KB · Affichages: 40

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Merci à vous deux c'est exactement ce que je voulais faire.

Par contre mes compétences sont limitées, je ne parviens pas à adapter ce modèle à mon cas.
J’ai copié vos codes sur mon fichier ci-joint final en essayant de les adapter à mon cas. Mais résultat non concluant.
Je vous sollicite une dernière fois, promis.

L'userform1 est sur ma feuille stock via le bouton "Sortie Stock".

Même cas que mes problématiques précédentes.
Je veux afficher sur la listbox les lignes de la colonne O qui correspond à mes commandes.

Je veux décharger :
- Sur la feuille stock:
Par rapport aux lignes de la listbox1 sélectionnées :
La textbox1 N° container dans la colonneN
La textbox2 qui correspond à ma date d'éxpédition dans la colonne M


Aussi sur la feuille facturation :

Je souhaiterais décharger au fur et à mesure (à la suite des champs) en fonctions des commandes sélectionner dans la listbox1

textbox1 en colonne A à partir de la ligne 4
Toutes Les lignes sélectionnées en colonne B à partir de la ligne 4
La textbox 2 (qui correspond à ma date d'expédition) en colonne D
textbox 8 en colonne H
textbox9 en colonne I
textbox10 en colonne J
textbox11 en colonne K
textbox13 en colonne L

Je sais que j'en demande beaucoup mais je suis vraiment bloqué :(

Un gros merci pour votre aide.
 

Pièces jointes

  • Projet.xlsm
    107.5 KB · Affichages: 51
  • Projet.xlsm
    107.5 KB · Affichages: 72

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonjour le monde,

flo189, à mon avis, tu vas trop vite en besogne ... et il y a donc des "détails" qui t'échappent. Comme ton projet devient un peu tentaculaire, inévitablement, tu risques (et nous plus encore de ne plus t'y retrouver!?)

Il me semble par ailleurs que le second UserForm, proposé par Si... et permettant de sélectionner une date serait une piste à ne pas écarter trop vite (elle garantirait que le contenu de la TextBox1 serait bien une date, par exemple!)

Au chargement de ton UserForm, l'objet dictionary (d1) n'est pas garni ... parce que la variable lL vaut ... 0. Elle est initialisée au clic sur le ... Bouton1, ce qui est un peu surprenant!? Ce devrait plutôt être au clic sur le Bouton2, non (Bouton2 étant un nom donné à deux boutons différents: 1 dans la feuille Stock, le second dans la feuille Plan empotage)
C'est un peu comme ... mettre trois fois le même message sur le forum (je crois que tu peux arrêter! :D)

Ta ListBox1 est toujours en MultiSelectSingle :eek::confused:

Prends les problèmes un par un: tu as le nez dans le guidon ... Pose-toi 2 minutes!
 

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Salut Modeste,

Oui effectivement je ne voyais pas mon message alors je l'ai posté 3 fois veuillez m'excuser.

Le second Userform proposé par si est très intéressant. Je trouve ça très bien.

Effectivement je modifie le bouton 2. Il doit renvoyer à la feuille stock et mon bouton 3 à la feuille facturation.

Qu'est ce que tu entends par d1 n'est pas garni ?
 

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Re,

Sous tes 2 derniers messages > Modifier le message > Effacer le contenu et remplacer par un message du type "erreur de manipulation" (éventuellement adresser un message au modérateur PascalXLD, pour lui demander de les supprimer ... quand il en aura l'occasion)

Pour ton autre question,
  • place un point d'arrêt (mettre le curseur dans la ligne de code et appuyer sur F9) sur l'instruction For i = 4 To lL dans la Sub UserForm_Activate
  • Clique ensuite sur le bouton pour afficher le UserForm
  • L'exécution du code s'arrête au ... point d'arrêt! Pointe avec ta souris sur la variable lL; une info-bulle devrait afficher sa valeur. Si celle-ci est à zéro, il faut stopper l'exécution du code et trouver à quel endroit on affecte une valeur à cette variable, puisque, si elle vaut zéro, tu ferais donc une boucle de 4 à ... 0 (ce qui ne dure guère!) Et c'est à l'intérieur de cette boucle que l'autre variable (d1) devrait se voir affecter des valeurs, elle aussi.

Tu me suis?
 

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

À mon humble avis, 9 chances sur 10 que ce soit lié au DtPicker. plutôt risques
Mon bon Si... c'est un peu le verre à moitié vide ou à moitié plein ;) il y avait 9 chances sur 10 que l'explication soit la bonne ... c'est pas de chance pour le DTPicker :p

@flo189: tu as un peu de mal à suivre ... mais pour quelle partie des explications? Tout??? Ou seulement une partie? :eek:

Dans son code, "thebenoit le bruxellois" utilise un objet "dictionary". Pour alimenter cet objet (en garnir les clés), il passe par une boucle For. Cette boucle commence à 4 et se poursuit jusqu'à la valeur d'une variable lL. Dans ton dernier fichier (je suppose que c'est 3 fois le même: je n'ai pas vérifié), la boucle devrait aller de 4 à 13 (pour parcourir toutes les lignes de la feuille Stock)

Le problème, expliquais-je précédemment, est que cette variable lL vaut 0 (au lieu de 13).
La boucle For s'exécute donc de 4 à ... 0! Elle a donc fini de s'exécuter avant d'avoir véritablement commencé. Il faut donc trouver pourquoi lL vaut 0 au lieu de 13.

On trouve un "lL = Range("a65000").End(xlUp).Row" dans la Sub Bouton1_Cliquer() qui figure dans le Module 5. Lorsqu'on clique sur bouton1, c'est la procédure test qui est exécutée!
Si cette l'instruction affectant une valeur à lL ne s'exécute pas avant le moment où ton UserForm s'affiche, la variable lL n'est pas initialisée et vaut donc 0, la boucle ne s'exécute pas, le "dictionary" est vide et donc la liste ne peut être "garnie".

Me suis-tu mieux?

En conclusion, c'est au clic sur un des "bouton2" (sortie stock) que ton UserForm s'affiche. c'est donc là qu'il faut déplacer la fameuse ligne commençant pas lL=Range(etc.

Est-ce mieux encore?

PS: il n'est pas nécessaire d'activer la feuille stock avant cette instruction, si on l'écrit de cette manière:
lL = Worksheets("Stock").Range("A65000").End(xlUp).Row

C'est malin, j'ai soif, maintenant!:rolleyes:
 

thebenoit59

XLDnaute Accro
Re : Chargement et déchargement listbox

Et oui pas de chance avec le DTPicker.
Mais je ne comprends pas où s'arrête de fonctionner le second fichier que j'ai transmis avec un Textbox.

TheBenoit le bruxellois, ça pourrait devenir un pseudonyme :).

Les explications de Modeste sont intéressantes.
Je te conseille de regarder un peu le fonctionnement du dictionary pour en saisir l'intérêt.
 

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Bonjour à tous,

Veuillez m'excuser pour ce silence. J'ai écouté les conseils de theBenoit59, j'ai pris un peu de recul sur mon projet.

Je reviens sur le code de Si que je trouve très bien.

Je ne parviens pas à charger ma listbox. Je pense que ce problème est dû au fait que mes données soient sur une autre feuille que la feuil1. Les données sont sur la feuille "stock"

Merci de votre aide, ci-joint mon fichier sur lequel j'ai essayé d'adapté le code de si.
 

Pièces jointes

  • Projet (3).xlsm
    118.9 KB · Affichages: 74

Lone-wolf

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonsoir à tous :)

Ooooouuuuupppss!! Désolé! gene.gif Je devait me rendre au quai de chargement et déchargement des camions.
 

Pièces jointes

  • gene.gif
    gene.gif
    4.5 KB · Affichages: 57

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonjour flo189,

J'ai bien peur que tu n'en aies plusieurs, des problèmes (s'il repasse par ici, Si... nous dira si je m'ai gouré):
  • dans son fichier, cet afficionado des Tableaux avait converti la liste de données en tableau (Insertion > Tableau). La référence à [Tb[En attente de départ]] correspondait donc bien à une colonne portant le nom En attente de départ, dans le tableau nommé Tb. Ce n'est pas le cas dans ton fichier.
  • ce même tableau était limité en hauteur (385 lignes) ... la plage nommée Tb dans ton fichier, fait référence à une zone de 1.048.573 lignes. Ton tableau devrait par ailleurs faire référence à une plage démarrant en A3 et non B4 :confused:
  • dans ta colonne 13, l'existence d'une formule qui laisse apparaître un '/' dans une série de cellules risque bien de fausser les résultats du filtre: puisque celui-ci affiche les cellules non-vides en colonne 12 (ou 13?), celles contenant un unique '/' seront considérées comme non-vides!
  • dans le nom de ta procédure, il faut retirer le 2 dans Private Sub UserForm2_Initialize()

Pour corriger tout ça (mais prends tout de même le temps de lire attentivement et d'essayer de comprendre ce qui précède):
  1. supprime la plage nommée Tb (Formules > Gestionnaire de noms)
  2. supprime également toutes les lignes (et je parle bien de supprimer des lignes entières!) à partir de la ligne 14, jusqu'à la fin (clic sur le n° 14, puis Ctrl+Shift+Flèche bas, suivi de Ctrl+'-' touche Control et signe moins)
  3. remplace la formule en M4 par celle-ci:
    Code:
    =SI(N4="";SI(B4="";"";B4&" "&E4&" / "&F4);"")
    Recopie cette dernière jusqu'en M13
  4. positionne-toi dans une cellule quelconque mais non-vide de la plage A3:O13 et, dans l'onglet Insertion, clique sur Tableau (la plage A3:O13 devrait être automatiquement renseignée et la case "Mon tableau comporte des en-têtes" doit être cochée). Si ces 2 points sont ok, valide (si pas, corrige avant de valider :))
  5. dans Formules > Gestionnaire de noms, sélectionne le nom du tableau que tu viens de créer > Modifier... et change son nom en "Tb"
Pour le reste, on ne sait pas: tu appliques le filtre à la colonne 12 (celle des Observations) ... Est-ce correct?
N'oublie pas de retirer le 2 dans le nom de ta Sub
... et refais un test

Accessoirement, adresse une courte prière un saint quelconque, dans l'espoir que j'aie bien compris ce que tu voulais faire ... sinon j'aurai travaillé pour rien :rolleyes:
 

flo189

XLDnaute Occasionnel
Re : Chargement et déchargement listbox

Bonjour Modeste,

Je te remercie pour ton aide précieuse, je suis arrivé à faire ce que je voulais faire.

Juste une chose, je ne comprends pas pourquoi mon fichier est devenu très lourd. Il est très lent à s'ouvrir :(
As-tu une solution pour éviter ça ?
Je ne parviens pas à le mettre en PJ, il est trop lourd même en compressé…
 

Modeste

XLDnaute Barbatruc
Re : Chargement et déchargement listbox

Bonjour,

flo189 à dit:
... mon fichier est devenu très lourd. Il est très lent à s'ouvrir
As-tu une solution pour éviter ça ?

:) Difficile de proposer une solution, si on ne connaît pas la cause (si tu téléphones à un diététicien pour lui dire que tu prends du poids, il ne pourra sans doute pas non plus te proposer une solution, sans connaître tes habitudes alimentaires, les antécédents familiaux, les traitements en cours, etc.)

Combien de feuilles y a-t-il dans ton classeur? Quel est le nombre de lignes/colonnes utilisées dans chacune d'elles? Le tableau est-il bien strictement limité à la plage de cellules utiles (pas la peine de l'étendre sur 50.000 lignes, si tu n'as que 700 lignes utilisées aujourd'hui. C'est l'intérêt majeur des tableaux: dès que tu ajoutes des données sous le tableau, la taille s'adapte, les formules se recopient dans les nouvelles lignes, de même que les Mises en Forme Conditionnelles, les Validations, etc.). Dans chaque feuille, appuie sur Ctrl+End et regarde si tu n'aurais pas plein de lignes vides entre la fin de tes données et la "dernière cellule". As-tu bien, comme je le suggérais avec insistance supprimé les lignes sous les dernières données (pas en appuyant sur Delete!)? Aurais-tu ajouté des images? Utilises-tu des formules matricielles? ...

Bref il y a tant de causes possible ... procède déjà aux vérifications ci-dessus et puis reviens nous dire ce qu'il en est.
 

Discussions similaires

Réponses
18
Affichages
652

Statistiques des forums

Discussions
312 336
Messages
2 087 387
Membres
103 534
dernier inscrit
Kalamymustapha