Données d'une listbox vers une feuille excel

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 755 fois - Téléchargée 46 fois

Contenu du snippet

'Ce code fait appel à la bibliothèque Microsoft EXCEL (Microsoft Excel Library).
Il ne faut pas oublier de la référencer dans le projet.
Il nécessite un bouton (cmdListExcel)
une ListBox (List1)

Source / Exemple :


Option Explicit

Private Sub Form_Load()
  List1.AddItem "Adam"
  List1.AddItem "Bernard"
  List1.AddItem "Charles"
  List1.AddItem "Christophe"
  List1.AddItem "Edouard"
  List1.AddItem "Emilie"
  List1.AddItem "Fabrice"
  List1.AddItem "Juliette"
End Sub

Private Sub cmdListEXCEL_Click()
  Dim Appli As New Application
  Dim Ligne As String
  Dim LigneExcel As Integer
  Dim compt As Integer
    
  'Rendre visible EXCEL
  Appli.Visible = True
  
  'Créer un nouveau classeur EXCEL initialisé à la ligne 1
  Appli.Workbooks.Add.Activate
  LigneExcel = 1
  
  'Inscrire le contenu d'une listbox dans la feuille 1 d'un classeur EXCEL
  
  For compt = 0 To List1.ListCount - 1
  
  ' Affecter les données de la listbox dans les cellules de la feuille
  With ActiveWorkbook.Worksheets("Feuil1")
    .Cells(LigneExcel, 1) = List1.List(compt)
    LigneExcel = LigneExcel + 1
  End With
  
  Next compt
  
  MsgBox "Importation terminée.", vbInformation + vbOKOnly, "Fichier Texte -> Classeur EXCEL"
  Unload Me

End Sub

A voir également

Ajouter un commentaire

Commentaires

Salut,
ce code me parait intéréssant,mais pour un utilisateur de VB,et il possible de faire l'inverse; récupérer les données d'une feuille excel et les inssérer dans une base acess
merci d'avance pour la reponce
BassoV13
Messages postés
3
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 septembre 2006
-
Salut merci pour la source :)
Juste pour simplifier un peu le code et pour permettre d'exporter une listview qui contient plusieurs colonnes :

--------------------------------------------------------
Private Sub cmdListEXCEL_Click()
Dim Appli As New Application
Dim i, j As Integer

Appli.Visible = True
Appli.Workbooks.Add.Activate

'Parcours des lignes du listview
For i = 1 To Lv.ListItems.Count - 1
'Parcours des colonnes du listview et traitement
For j = 1 To Lv.ColumnHeaders.Count - 1
With ActiveWorkbook.Worksheets("Feuil1")
.Cells(i, j) = Lv.ListItems(i).SubItems(j)
End With
Next
Next

MsgBox "Importation terminée.", vbInformation + vbOKOnly, "Fichier Texte -> Classeur EXCEL"
End Sub
----------------------------------------------------------
Timi493
Messages postés
12
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
29 avril 2011
-
Bonjour,
J'ai un classeur avec 2 feuilles.
Sur la feuil1 figure une listbox et deux boutons, 1 qui charge (dans la listbox), une liste d'articles contenus dans la colonne B et l'autre qui la vide.
Ensuite quand une cellule de la feuil1 est sélectionnée et que je double clic sur un des articles de la listbox la cellule activée écrit la référence de l'article situé dans la colonne A.
Tout marche bien quand les listes des colonnes A et B sont sur la feuil1 mais si je les place sur la feuil2 je peux charger ou vider ma listbox avec les doutons mais le double clic ne fonctionne pas.
Je n'arrive pas malgré mais recherches a trouver la bonne syntaxe pour lui dire de charger la référence de la colonne A feuil2.
En fait je voudrais faire référence à une feuille d'un autre classeur.
Voici mon code actuel.
Je suis sure d'être prêt du but.
Merci, cela m'aidera beaucoup.

Code dans vba feuil1

'Chargement liste

Private Sub CommandButton1_Click()
ListBox1.Clear
ComboListe
End Sub

'Vidage liste

Private Sub CommandButton2_Click()
ListBox1.Clear
End Sub

'Transfer pas double clic

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ligne = 2 + ListBox1.ListIndex '<== ligne qui ne fonctionne pas
ActiveCell = Cells(ligne, 1)
End Sub

Code dans module1

Sub ComboListe()
ligne = 2
Do Until Feuil1.Cells(ligne, 2) = "" And _
Feuil2.Cells(ligne + 1, 2) = ""
Feuil1.ListBox1.AddItem Feuil2.Cells(ligne, 2)
ligne = ligne + 1
Loop
End Sub
Timi493
Messages postés
12
Date d'inscription
mercredi 29 octobre 2008
Statut
Membre
Dernière intervention
29 avril 2011
-
j'ai trouvé, c'est très bête ce n'est pas la ligne :
ligne = 2 + ListBox1.ListIndex
qui ne fonctionne pas mais celle du dessous
ActiveCell = Cells(ligne, 1)
il y avait un oublie "Feuil2" comme ceci
ActiveCell = Feuil2.Cells(ligne, 1)

il faut pas grand chose pour passer du temps parfois !!!
mon code si simple sera peut être utile à d'autres.
younespoumon
Messages postés
3
Date d'inscription
mercredi 26 octobre 2005
Statut
Membre
Dernière intervention
21 avril 2010
-
Bonjour,

J'ai un fichier excel d'une seule feuille, à l'interieur y a un formulaire, je dois mettre une liste déroulante à plusieurs choix, et quand l'utilisateur selectionne un champ, implicitement les données relatives a ce champs reste et les autres se cachent.
Comment faire ça??

Merci d'avance et de prendre en considération que je suis débutante en VBA.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.