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!
 

jp14

XLDnaute Barbatruc
Re : ListBox VBA - Copier-Coller

Bonjour

Avec le fichier il serait plus facile de trouver l'erreur.

Quand a ce genre de problème, il faut vérifier si les données sont correctes.
Mettre un point d'arrêt sur (F9)
For i = 0 To Me.ListBox1.ListCount - 1
Puis utiliser le mode "Pas à Pas" (raccourci F8) .
Dans ce mode, la souris sur les variables du code permet de faire apparaitre les valeurs des variables.
La décomposition du code est très utile.

JP
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

Bonjour

Avec le fichier il serait plus facile de trouver l'erreur.

Quand a ce genre de problème, il faut vérifier si les données sont correctes.
Mettre un point d'arrêt sur (F9)
For i = 0 To Me.ListBox1.ListCount - 1
Puis utiliser le mode "Pas à Pas" (raccourci F8) .
Dans ce mode, la souris sur les variables du code permet de faire apparaitre les valeurs des variables.
La décomposition du code est très utile.

JP

Merci pour ces conseils, je vais essayer en mode pas à pas.

j'ai essayé de réduire le fichier pour le joindre à ce message mais je ne parviens pas à le joindre (trop volumineux).

Si tu le souhaite je peux te le communiquer par mail.

Un grand merci.

Seb.
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

En fait le but est que l'utilisateur sélectionne les entreprises qui l'intéressent dans la listeBox, et que le programme copie toutes les informations de chaque entreprise dans le fichier Comparatif chantier.

J'ai essayé de limiter le nombre de ligne en modifiant le Rowsource à A2:A650.

Mais sans succès.
 

jp14

XLDnaute Barbatruc
Re : ListBox VBA - Copier-Coller

Bonsoir (re)

Ci dessous le code à tester

Code:
Private Sub Soumission_Click()

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

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

Mettre le nom raison_sociale
avec cette formule pour fait référence =DECALER(Liste!$A$2;;;NBVAL(Liste!$A:$A)-1)

Et dans rowsource de la listbox mettre raison_sociale

JP
 

Hades60250

XLDnaute Nouveau
Re : ListBox VBA - Copier-Coller

Bonjour à tous,

j'ai fais la modif que JP me conseillai. Malheureusement cela ne fonctionne pô!

Je me suis peut-être planté dans la manoeuvre.

JP: la formule à insérer doit elle être modifiée? Actuellement la cellule affiche "#VALEUR".

Merci,

Seb.

PS désolé pour le temps de réponse, mea culpa.:eek:
 

jp14

XLDnaute Barbatruc
Re : ListBox VBA - Copier-Coller

Bonjour

Ci dessous les images.
image 1
Menu "Insertion" option "nom" .
Mettre le nom raison_sociale
avec cette formule pour "fait référence" =DECALER(Liste!$A$2;;;NBVAL(Liste!$A:$A)-1)

Et dans rowsource de la listbox mettre raison_sociale Image2.

JP
 

Pièces jointes

  • img1.jpg
    img1.jpg
    46.5 KB · Affichages: 83
  • img1.jpg
    img1.jpg
    46.5 KB · Affichages: 90
  • img1.jpg
    img1.jpg
    46.5 KB · Affichages: 91
  • img2.jpg
    img2.jpg
    14.8 KB · Affichages: 81
  • img2.jpg
    img2.jpg
    14.8 KB · Affichages: 90
  • img2.jpg
    img2.jpg
    14.8 KB · Affichages: 82

Discussions similaires

Réponses
4
Affichages
213
Réponses
17
Affichages
840

Statistiques des forums

Discussions
312 215
Messages
2 086 332
Membres
103 188
dernier inscrit
evebar