RemoveItem Listbox

Luki

XLDnaute Accro
Bonjour le forum,

J'ai un souci aves 2 listBox.

Dans Listbox1, je dois enlever les Items présents dans la listBoX2.
Les items ne sont pas dans le même ordre et les listes ne contiennent pas le même nombre d'éléments. Par contre, tous les items de LBX2 sont forcément présents dans LBX1.

J'ai fait une boucle sur LBX2 en utilisant la propriété List (i), donc je récupère la valeur de l'item.( par ex 'Dimension1')

Ma question : comment trouver l'index correspondant à 'Dimension1' dans la LBX1, pour le passer à RemoveItem.
J'ai essayé de passer directement RemoveItem('dimension1') mais VBA veut pas ! le coquin! Il veut l'index.


Merci à vous et bonne journée
 

Hervé

XLDnaute Barbatruc
Bonsoir

Pas sur d'avoir tout compris, mais je tente ma chance.

Si j'ai tout faux, ca ne fera qu'un zop de plus, après tout. :)

Donc tu trouveras en pièce jointe, un fichier avec deux listbox dans un userform.

Le bouton supprimer sert à sortir de la listbox1 les items présent dans la listbox2. (luki, j'ai bon jusque là ???)

par contre je suis passer par un tableau, car par la fonction removeitem, il me semble que ce ne soit pas possible.

En effet si tu boucles par un for i=0 to listbox1.listcount-1, et que ensuite tu supprimer un item, tu vas boucler sur des items qui n'existent plus.

Suis-je clair ???

En espérant t'avoir aidé.

Salut

[file name=Classeur1_20050518001634.zip size=10672]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur1_20050518001634.zip[/file]
 

Pièces jointes

  • Classeur1_20050518001634.zip
    10.4 KB · Affichages: 89

MichelXld

XLDnaute Barbatruc
bonjour Luki , bonjour Hervé

Hervé , j'ai compris la meme chose que toi

ci joint une autre version sans passer par un tableau intermédiaire


Private Sub CommandButton1_Click()
Dim i As Integer, j As Integer

For i = ListBox2.ListCount - 1 To 0 Step -1

For j = ListBox1.ListCount - 1 To 0 Step -1
If ListBox1.List(j) = ListBox2.List(i) Then ListBox1.RemoveItem j
Next j
Next i

End Sub



bonne journée
MichelXld
 

Luki

XLDnaute Accro
Bonjour,Hervé, MichelXLD, le forum

Merci à vous deux de vous être penchés sur le problème.

Vos solutions confirment ce qui m’est apparu en m’endormant ( ce court moment où les bonnes idées émergent à la surface de la conscience comme un post remonte à la première page du forum alors que l’on ne l’attend pas !)

J’ ai été un peu bref dans la présentation du problème, mais vous avez bien compris la situation. J’espère que vous me pardonnerez…

Il s’agit en fait du cas suivant :

J’ai une feuille de données ' brutes ' avec une cinquantaine de champs.
Je veux créer de nouvelles feuilles en choisissant les champs à afficher.

Via un Uform, je remplis une Lbox1 avec les champs disponibles dans la feuille de données brutes.
Je choisis et transfère des champs de Lbox1 vers Lbox2.

J’agis dans Lbox 2 : je fais remonter ou descendre les champs , je les enlève.

C’est là que se pose le problème : Je sais renvoyer un champ de lbox2 vers Lbox1 mais je ne sais pas comment le remettre au bon endroit ( les champs ne sont et ne doivent pas être triés, se serait trop fad’ comme dit ma fille !). Je sais le mettre à la fin ou au début. Même en stockant l’index d’origine avec le champ, ça ne va pas car l’index peut-être obsolète dès qu’un autre champ est transféré.

L’idée serait donc de recharger Lbox1 en entier puis de lui ' soustraire ' les champs présents dans Lbox2. C’était là l’objet de mon post et je constate qu’il n’existe pas de solution plus ' directe ' que de passer par un tableau ou une boucle. Je vais donc agir dans ce sens.

Il y a un post de Greg2 avec des réponses de Robert dans le même esprit, mais il ne va pas aussi loin.
Lien supprimé

Merci encore à vous, à bientôt. :)

Edition!!!

MichelXld, tu utilise le 'Step' pour les boucles, je ne sais pas l'utiliser et je ne connais pas ses avantages, peux-tu m'éclairer?

Merci

Message édité par: luki, à: 18/05/2005 10:22
 

Hervé

XLDnaute Barbatruc
Bonjour tout le monde

Michel : boucler en partant de la fin, boucler en partant de la fin, promis je le copierais 100 fois. :)

Merci de cette correction.

Luki : juste une idée, pourquoi ne pas stocker dans une colonne masqué de la listbox1, le numéro d'index, donnée lors de l'initialisation du userform.

Ainsi tu pourrais le récupérer facilement.

salut
 

Luki

XLDnaute Accro
Re, Hervé, Michel

Michel, au vu du post d'Hervé, 'step' semble permettre de boucler par la fin! Je vais étudier le cas.

Hervé, J'y ai pensé, mais je ne pense pas que ça fonctionne, je reste sur donc la boucle de comparaiison qui me semble plus efficace.

Ceci dit j'ai essayé avec worksheetfonction.match sur la variable Tablo et ça paraît fonctionner. Merci pour l'exemple, je n'aurais pas imaginé déclarer une variable comme cela, sans les ().

Je vais faire encore quelques essais et je vous tiens a courant.

A+
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour le fil

Juste pourpréciser luki step t'indique le pas à sauter dans ta boucle

si tu ne mets rien cela equivaut à 'step 1'

ce qui permet de boucler à l'envers c'est en fait 'step -1'

mais bien sur si tu veux regarder un sur deux il faut ecrire 'step 2' et à l'envers mais de 2 en 2 'step -2'

Voili voilou quelques renseignements sur les steps (en plus ça muscle les jambes :) :) )

Bonne journée
 

Luki

XLDnaute Accro
Merci Pascal de muscler mes neurones, pour les jambes, j'habite au 5ème sans ascenceur ( tu sais bien, les flêches à gauche et à droite de la fenêtre lol!).

Donc si je rentre chez moi 2 à 2 : step 2 et si je sors et que je loupe la première marche: step - 5étages d'un coup!

A+


EDITION!!!

Et dire qu'il y a quelques mois, j'ai essayé de faire une boucle par la fin sans y parvenir.... J'ai encore appris aujourd'hui.
Merci à vous

Message édité par: luki, à: 18/05/2005 13:42
 

Luki

XLDnaute Accro
Re à tous

Comme vous êtes sympa et disponibles , je vous passe en Pj l'exemple ( qui marche)du Uf en cours élaboré avec votre aide.


A+ [file name=transfert_20050518155817.zip size=30195]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/transfert_20050518155817.zip[/file]
 

Pièces jointes

  • transfert_20050518155817.zip
    29.5 KB · Affichages: 103

Statistiques des forums

Discussions
312 389
Messages
2 087 932
Membres
103 676
dernier inscrit
Haiti