Pb avec listbox, je désespéres !!!

Signaler
-
Messages postés
21
Date d'inscription
mercredi 5 novembre 2003
Statut
Membre
Dernière intervention
2 février 2005
-
Bonsoir à tous,
Voilà mon problème:
j'ai 2 listbox dans un userform
ma première liste est remplie via une plage de cellules
Souhaitant faire des échanges entre les listbox, j'arrive bien "copier" un item de la liste 1 vers la liste 2, de "couper" un item de la liste 2 vers la liste1...etc, ect...
Là ou je recontre de grosse difficultés c'est que je voudrais "couper" l'item de la liste 1 quand je l'envoie vers la liste 2...
Je sais d'où viendrais le problème... vu que ma liste1 est liée à ma plage de cellules je ne peut pas utiliser removeitem...
Donc comment faire pour charger ma liste 1 avec mes données provenant d'une feuille excel sans que ces données soient liées ?

Merci de votre aide
Seb

3 réponses

Messages postés
205
Date d'inscription
samedi 22 janvier 2005
Statut
Membre
Dernière intervention
28 novembre 2005
2
Je comprend ton problème!

En fait et c'est un avis personnel, la programmation "compactée" pour développé au plus rapide n'es pas toujours justifié! Nous avons des machine rapide aujourd'hui. Alors il faut plutot dévelloper pour que ton code soit simple quitte a demander plus de ressource! (heuuu je sais pas si c clair dsl)

Quoi qu'il en soit voici ma solution!

Cré 2 tables tListe1 et tListe2 avec les même champ
à chaque liste box associe une table

Tu n'as plus qu'a jouer sur un insert et delete et rafraichir tes table!

Par exemple si la personne passe un enregistrement indexé à 1 de la liste 1 à la 2 tu fera
Insert into tListe2(monIndex,MonChamp) Values(1,liste1.column(1))
Puis
Delete * From tListe1 WHERE monIndex = 1

Puis tu fait un requery de tes liste et le tour est joué! Et tu verra c'est ultra rapide a l'execution contrairement à ce que l'on pourrai voir et ton code reste simple d'écriture

A+

Ptitgrumo vol pas haut
Salut,
y'a peut-être une solution
tu nomes ta plage de cellules Range("A1:A12").Name = "Toto" '~~ Par exemple
Ensuite si tu veux enlever un item de tes ListsBox tu dois envoyer la valeur de ta cellule à la fin de ta plage puis tu renomes le tout en prenant bien soin d'enlever -1 à ta plage de cellules
Tout ceci dans la mesure ou tu peu jouer sur tes cellules ce qui n'est peut être pas le cas.
Il faudras aussi que tes ListBox se réfèrent non plus à ta plage mais à ton nom de plage
suis-je assez clair
Si tu ne peux pas faire cela tu ne dois pas lier tes listbox mais les remplir avec un additem

Cordialement, Jean-Paul
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
Messages postés
21
Date d'inscription
mercredi 5 novembre 2003
Statut
Membre
Dernière intervention
2 février 2005

Bonjour,


Merci pour vos réponses.


PtitGrumo, n'étant pas un grand expert en programmation, je suis désolé mais j'ai pas tout compris ce que tu proposes... mais t'inquiétes c'est pas grave, merci quand mm.


Jean-Paul j'avais déjà bien pensé à la solution de nommer une plage avec notamment une fonction DECALER comme certain site le propose mais je ne sais pas pourquoi je n'ai pas réussi à faire fonctionner le "shmilblik"...
Pour finir, j'ai donc opté pour additem directement avec mes cellules

For a = 4 To Derniere_Ligne
ListBox1.AddItem Worksheets("Feuil1").Range("B" & a)
Next a

Voilà voilà
Merci pour votre aide et @+
Seb