problème de plage pour copier contenu listbox dans classeur

  • Initiateur de la discussion bichon
  • Date de début
B

bichon

Guest
RE Coucou a tous et a toutes mon 2eme problèm de la journé et le dernier lol
est je ne sais pas comment faire la seletion d'un plage de cellules pour copier le contenu
d'une liste box car dans le contenu de ma list box il peut y avoir 2 element comme 40
voici mon code

Private Sub CommandButton9_Click()


Workbooks.Open FileName:="F:\Metachut 2003\Optmet\Archives\Nvelle archive.xls"
Range("D5").Value = Optbase.ListBox2.List

end sub

je veux copier ce contenu en D5 jusqu'a ce que le contenu de la listbox2 soit fini
j'ai essayué plusieur solutions mais sans resultat si je definit une plage et si il n'y a pas assez d'element
il me met des ##N/A si il n'y en a pas assez il oublie de mettre des données
donc voila

help me
merci beaucoup

bonne soirée
bichon
 
L

LaurentTBT

Guest
Re salut,

Je ne suis pas sûr de comprendre exactement ce que tu veux (comme d'hab!!!)
Si tu veux inscrire tous les éléments de ta listbox à partir de D5, et je suppose en colonne, il faut une boucle:

for i=1 to Optbase.ListBox2.Count 'ListBox.Count=nbre d'éléments que comporte ta ListBox
Range("D5").Value = Optbase.ListBox2.List(i-1)
next i

Si tu ne veux inscrire que les éléments sélectionnés (dans le cas où ta listbox2 est à sélections multiples, alors tu ajoute un test pour savoir si l'élément i-1 de la listbox est sélectionné:

for i=1 to Optbase.ListBox2.Count
if Optbase.listBox2.selected(i-1) then Range("D5").Value = Optbase.ListBox2.List(i-1)
next i

Est-ce cela que tu cherches?

@+
 
B

bichon

Guest
oui c ca lau c 'est plutot la 2eme solution c'est la meme boucle si la listbox2 n'est pa a selection multiples?
ps je t'ai renvoyé un mess sur le forum pour le problème de la zone

merci encore laurent
 
B

bichon

Guest
salut laurent ca va je tiens a te remercier pour tes aides precieuses mais j'ai encore
besoin de toi .....
j'ai essayé ton code mais il me le refuse il comprend pas le count
alors je lai remplacé par listcount ca marche mais rien ne se passe
car je t'explique maintenant j'aimerai toujours copier tout les element de ma listbox2 et les
coller sur chaque lignes a partir de D5
j'aimerai egalement coller des donné que j'insere dans un textbox sur cetaine cellules que tu vera dans
le code ci dessous
car maintenant en fait jouvre un autre excel avec la feuille ou je veux coller ces données
donc jimagine que le code est un peu plu compliqué
voila ou j'en suis

Private Sub CommandButton9_Click()

Dim chemin As String
Dim clas As String
Dim retval As Double
Dim i As Byte

clas = "F:\Metachut2003\Optmet\Archives\Nvellearchive.xls"
chemin = "C:\Program Files\Microsoft Office\Office\excel.exe " & clas
retval = Shell(chemin, 4)

For i = 1 To Optbase.ListBox2.ListCount
Range("D5").Value = Optbase.ListBox2.List(i - 1)
Next i
Range("AD3").Value = TextBox1.Value
Range("Z2").Value = TextBox2.Value
Range("AH2").Value = TextBox3.Value
Range("AD2").Value = TextBox4.Value

End Sub

voila ca serai super cool que tu me vienne en aide une fois de plus si ta besoin d'un zip di le moi je ten ferai
parvenir un sur le forum
J'aimerai egalement faire le contraire a partir de classeur excel qui sont dans une liste
recuperer des donnée en d5 jusqu'a qu'il y en ai dans les lignes suivante et les inserer dans la
listbox2 mais bon ca on vera par la suite lol
merci bcp

jp
 
Z

zon

Guest
Re,

Bichon, ce serait bien de nous dire comme tu initialises ta listbox...


Ensuite je pense que tu veux pas mettre exclusivement tes données en D5, mais en D5,D6 .... Di

Ou en D5: Listbox2(0),Listbox2(i) .....


A+++
 
B

bichon

Guest
oui c'est exact je veux les mettre en d5 d6 di jusqu'a que les données de la liste soit fini
voici le code de l'init

Private Sub UserForm_Initialize()

' Insertion des metallo optionnels persos dans la liste

Dim VarDerLigne As Integer
Dim VarPlageList As String
VarDerLigne = Sheets("Baseopt").Range("A5").End(xlDown).Row
VarPlageList = Sheets("Baseopt").Range("A5:B" & VarDerLigne).Address
ListBox1.RowSource = "Baseopt!" & VarPlageList
End Sub

tu peux m'aider zon?
 
Z

zon

Guest
Re,


For i = 0 To Optbase.ListBox2.ListCount -1
Range("D"&I+5).Value = Optbase.ListBox2.List(i)
Next i



RQ: pourquoi mettre Sheets("Baseopt").Range("A5:B" & VarDerLigne).Address, alors qu'à priori tu n'as qu'une colonne dans ta listbox ?

Si tu veux 2 colonnes listbox2.columncount=2 est à mettre dans l'initalisation de ton USF....


A+++
 
B

bichon

Guest
parce que en fait dans la feuille optbase jai 2 colonne la premiere c'est le nom qui apparait dans la listbox et la 2 c'est le nom du classeur qui correspond au nom de la premiere colonne
car comme je veux egalement ouvrir ces classeur dans le code j'ai mis le dossier courant & le nom de la deuxieme colnne qui correspond au nom selectionné
tu comprend?
en tout ca marche quand je souhaite l'"ouvrir alors lol
sinon ben jessaye ton code demin et je te tien o courant sur ce fil ok
merci a toi
 
L

LaurentTBT

Guest
Bonsoir le forum, Salut JP et Zon.

Bichon, Zon a raison, il ne sert à rien dans ton cas de mettre dans la propriété RowSource les deux colonnes A et B.
Remplace Sheets("Baseopt").Range("A5:B" & VarDerLigne).Address par
Sheets("Baseopt").Range("A5:A" & VarDerLigne).Address et tu verras que cela fonctionne tout aussi bien.
D'ailleurs c'est en partie à cause de cela qu'au départ j'avais fait fausse route en pensant à une ListBox multicolonne.

@+
 
B

bichon

Guest
Salut zon laurent et tout le monde alors voila zon ton code marche niquel quans jouvre un autre classeur
les donnée de ma listbox + celle des text box marche tre bien mais comme maintenant j'ouvre un autre excel avec
le classeur ou doivent etre copier ces données cela ne marche plus du tout
faut-il changer quelque chose dans mon code ?

le voici

' Archiver fiches sélectionnées

Private Sub CommandButton9_Click()

Dim chemin As String
Dim clas As String
Dim retval As Double
Dim i As Byte

clas = "F:\Metachut2003\Optmet\Archives\Nvellearchive.xls"
chemin = "C:\Program Files\Microsoft Office\Office\excel.exe " & clas
retval = Shell(chemin, 4)

For i = 0 To Optbase.ListBox2.ListCount - 1
Range("D" & i + 5).Value = Optbase.ListBox2.List(i)
Next i
Range("AD3").Value = TextBox1.Value
Range("Z2").Value = TextBox2.Value
Range("AH2").Value = TextBox3.Value
Range("AD2").Value = TextBox4.Value
End Sub



remarque: si tu en a besoin la feuille du classeur nvellearchive s'apelle recap
autre remarque tres importante : dans le fil le plus recent dont l'intitulé est imprimer tous les element dans une listbox
jai mis un fichier joint ou ce problème y est et ou tu pourra peut etre mieux comprendre mes demande jai mis
ce que je souhaiter dans les commentaires
Par la suite j'aimerai egalemement faire le contraire c'est a dire a partir d'une feuille excel recuper les donnée de d5 jusqu'a
qu'il y en ait pour les mettre dans une listebox

merci beaucoup encore
 
Z

zon

Guest
Bonsoir à tous,


Bichon, RDV sur le fil suivant :

Lien supprimé



A+++





PS Ce post est fini pour moi Salut zon laurent et tout le monde alors voila zon ton code marche niquel quans jouvre un autre classeur
les donnée de ma listbox + celle des text box marche tre bien mais comme maintenant j'ouvre un autre excel avec
le classeur ou doivent etre copier ces données cela ne marche plus du tout
faut-il changer quelque chose dans mon code ?
, pour une "session" d'Excel voir sur le fil plus haut.....
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 331
Membres
103 519
dernier inscrit
Thomas_grc11