ListBox VBA - Copier-Coller

Hades60250

XLDnaute Nouveau
Bonjour à toutes & tous!

Nouveau sur le forum je me permet déjà de vous demander de l'aide concernant une base de données que je suis en train (d'essayer:D) de dévellopper.

Voilà le décor: j'ai créé une base de données contenant des coordonnées d'entreprises. Dans ce fichier, j'ai un UserForm dans lequel j'ai mis une ListBox. Le Rowsource du ListBox est renseigné dans l'outil propriété.
Je souhaite en fait que l'utilisateur puisse sélectionner plusieurs entreprises dans ce ListBox et au moment ou il appuie sur le bouton "Soumission", que les données soient collées dans un autre classeur.

"Liste" est la feuille dans laquelle je pompe les données
"Comparatif chantier .xls" est le fichier de destination

Voilà le code:

Private Sub UserForm12_Initialize()
Me.ListBox1.List = Sheets("Liste").Value
Me.ListBox1.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub Soumission_Click()
'Déclaration des variables utilisées
Dim i As Byte
Dim ligne As Long

ligne = 1
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Excel.Workbooks("Comparatif chantier .xls").Sheets("Liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i)
Excel.Workbooks("Comparatif chantier .xls").Sheets("rListe des ets").Cells(ligne, 2) = Me.ListBox1.List(i, 1)
ligne = ligne + 1
End If
Next i
End Sub

Et naturellement...... ça marche pô! ça plante sur la ligne For i (message d'erreur = dépassement de capacité).

Est ce qu'une ou plusieurs âmes charitables pourraient apporter de l'eau à mon moulin???
Petite précision: je suis vraiment très novice en VBA, je navigue à taton sur ce fichier depuis 3 mois...

Merci par avance!
 

mutzik

XLDnaute Barbatruc
Re : ListBox VBA - Copier-Coller

bonjour,
dim i as byte = i peut avoir au max 256 valeurs
mets dim i as long et tu n'auras plus le msg d'erreur
pour info : sélectionne le mot byte (ou long) puis tapes sur F1 (aide) et tu verras toutes les variables utilisables et leur portée
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

Re!

Le problème est en effet résolu concernant la variable i.

Par contre j'ai visiblement d'autre soucis dans ce code.

Cette fois ça plante sur la ligne suivante:

Excel.Workbooks("Comparatif chantier .xls").Sheets("liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i)

Le message d'erreur est le suivant: Erreur d'execution 9: l'indice n'appartient pas à la sélection.

Pouvez vous à nouveau m'aider?
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

re,
les listbox et autres combobox commencent à l'indice 0et non 1 (par défaut)
donc si tu y a mis 9 valeurs, elles vont de listbox(0) à listbox(8)
donc faut faire i-1

Merci Bertrand.

Donc si je comprend bien il faut que je rentre la ligne suivante:

Excel.Workbooks("Comparatif chantier .xls").Sheets("liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i - 1)

Est ce bien cela?
NB: je viens d'essayer mais j'ai toujours le même message d'erreur...
Le fait que j'ai entré For i = 0 To Me.ListBox1.ListCount - 1 ne fait pas doublon avec i-1?

Merci par avance!
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

Bonjour le fil

Il faut écrire simplement,

Code:
Excel.Workbooks("Comparatif chantier .xls").Sheets("liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i )

l'index est i .



JP

J'ai modifié le code.... mais j'ai toujours le même message d'erreur....

Pour rappel le voici:

Dim i As Long (première modif qui a résolu le premier message d'erreur)
Dim ligne As Long

ligne = 1
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then
Excel.Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i) (j'ai essayé ici i-1 mais ça ne solutionne pas le problème)
Excel.Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 2) = Me.ListBox1.List(i, 1)
ligne = ligne + 1
End If
Next i
End Sub

Une petite idée les amis????

Promis j'vais commander le bouquin VBA pour les nuls pour noël :D

Seb.
 

jp14

XLDnaute Barbatruc
Re : ListBox VBA - Copier-Coller

Bonjour

Pour trouver une erreur il faut parfois décomposer le code

Code:
Excel.Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i)
remplacer le code ci dessus par

Code:
dim data1 as variant

data1 = Me.ListBox1.List(i)
Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = data1

A tester
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

Bonjour

Pour trouver une erreur il faut parfois décomposer le code

Code:
Excel.Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = Me.ListBox1.List(i)
remplacer le code ci dessus par

Code:
dim data1 as variant

data1 = Me.ListBox1.List(i)
Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = data1

A tester

Re!

Je viens de tester. voila ce que donne le code modifié:

'Déclaration des variables utilisées
Dim i As Long
Dim ligne As Long
Dim data1 As Variant

data1 = Me.ListBox1.List(i) ligne = 1

For i = 0 To ListBox1 - 1
If data1.Selected(i) = True Then
Excel.Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = data1
Excel.Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 2) = data1(i, 1)
ligne = ligne + 1

End If

Next i

End Sub

Cette fois il plante sur For i = 0 To ListBox1 - 1 avec le message d'erreur suivant: Erreur 94: utilisation incorrecte de Null
 

jp14

XLDnaute Barbatruc
Re : ListBox VBA - Copier-Coller

Bonjour

Il fallait l'écrire



Code:
Dim i As Long
Dim ligne As Long
Dim data1 As Variant

ligne = 1

For i = 0 To ListBox1.ListCount - 1
If Listbox1.Selected(i) = True Then
[COLOR="Red"]data1 = Me.ListBox1.List(i)[/COLOR]
Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 1) = data1
'Workbooks("Comparatif chantier.xls").Sheets("liste des ets").Cells(ligne, 2) = data1(i, 1)
ligne = ligne + 1

JP
 
Dernière édition:

Hades60250

XLDnaute Nouveau

Discussions similaires

Réponses
4
Affichages
165
Réponses
17
Affichages
760

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou