-
1 févr. 2005 à 18:13
thesebinou
Messages postés21Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 2 février 2005
-
2 févr. 2005 à 19:15
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 ?
PtitGrumo
Messages postés205Date d'inscriptionsamedi 22 janvier 2005StatutMembreDernière intervention28 novembre 20052 1 févr. 2005 à 18:26
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
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
thesebinou
Messages postés21Date d'inscriptionmercredi 5 novembre 2003StatutMembreDernière intervention 2 février 2005 2 févr. 2005 à 19:15
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