Bonjour
Lorsque l'on travaille (ce que j'approuve personnellement) sur une listbox liée (par RowSource), on profite de tous les avantages de cette liaison.
Tu veux quoi finalement ? coller dans une autre feuille des lignes d'une feuille correspondant aux articles sélectionnés dans ta listbox et supprimer ces lignes de la feuille de liaison ?
Cela revient à :
Parcourir dans une boucle for i = 0 to listbox1.listcount-1)les élements de la listbox et, pour chaque élément sélectionné, le mettre dans un objet range (appelons-le plage) constitué ainsi (à main levée) :
1 2 3 4 5 6 7 8 9
| dim plage as range
with worksheets(" .... nom de la feuille source ... ")
deb = deb = .range(listbox1.rowsource).row
If plage is nothing then
set plage = .rows(i + deb)
else
set plage = union(plage, .rows(i + deb)
end if
end with |
Voilà -->> tu te trouves maintenant en possession d'une plage de ta feuille source correspondant à ce que tu as sélectionné dans la listbox.
Qu'en faire ? --->>
Tu vérifies que plage a bien été constituée (que tu as sélectionné au moins un article --->> tu quittes la sub dans le cas contraire --->>
if plage is nothing then exit sub
puis (elle n'est donc pas nothing)
1) tu la copies dans la feuille de destination à partir de la cellule de ton choix -->>>
plage.copy destination:= worksheets("... nom de la feuille de destination ...).range(...adresse de la cellule de début ...)
et
2) tu la supprimes de la feuille source
Voilà. C'est tout. Et tu verras que ta listbox est elle également mise à jour (puisque liée).
Je te laisse maintenant écrire cela dans ton projet en adaptant les noms ... et en corrigeant au besoin un oubli toujours possible de ma part (code écrit à main levée).
EDIT : ceci ayant été dit , ce que j'ai exposé est général et ne répond pas à la manière de localiser dans une listbox une valeur spécifique. Et ce dernier aspect, hors sujet dans la présente discussion, devrait faire l'objet d'une discussion distincte.
Partager