• Initiateur de la discussion Initiateur de la discussion Luki
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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

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
 
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
 
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
 
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+
 
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
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
517
Réponses
4
Affichages
624
Réponses
8
Affichages
873
Réponses
5
Affichages
710
Réponses
1
Affichages
782
  • Question Question
Microsoft 365 ListBox
Réponses
2
Affichages
533
Retour