Importation donnée Excel sur Listview
Bonjour a tous,
Voila j'ai un listview dans un userform et dans un AUTRE fichier excel j'ai ma base de données.
Mon souhait serait d'importer les données de la base de données dans le listview !!
Quelqu'un peut-il me renseigner, sur le code VB à mettre en place ?
Merci
-- 17 Mai 2010, 10:49 --
Voila le code que j'ai esquissé, mais il me met une erreur 1004 ...
Private Sub UserForm_Initialize()
Dim nomclasseursource As String
Dim nomfeuillesource As String
Dim chemindacces As String
Dim donnee1 As String
Dim donnee2 As String
Dim i As Long
nomclasseursource = "BaseDeDonnées"
nomfeuillesource = "Base de données" 'Le nom de la feuille contenant les données dans le classeur source.
chemindacces = "K:\Repertoire Commun\Arnaud\Excel\VBA\BaseDeDonnées.xls"
'----- remplissage ListView------------------------
With ListView1
'Définit le nombre de colonnes et Entêtes
With .ColumnHeaders
'Supprime les anciens entêtes
.Clear
'Ajoute 3 colonnes en spécifiant le nom de l'entête
'et la largeur des colonnes
.Add , , "Date du jour", 70
.Add , , "Service", 50
.Add , , "Initiale", 40
.Add , , "Dépt", 30
.Add , , "Type", 50
.Add , , "Date de réclamation", 80
.Add , , "Code client", 50
.Add , , "Nom Interlocuteur", 80
.Add , , "N°Circuit", 50
.Add , , "Nature", 50
.Add , , "Obser Nature", 90
.Add , , "Action menée", 50
.Add , , "Obser Action", 90
End With
End With
'-----------------------------------------------------
'---Copie des données---------------------------------
Application.ScreenUpdating = False 'permet de ne pas afficher les différentes manipulations réalisées par la macro. On ne voit donc pas le fichier source s'ouvrir. Le rendu est plus propre.
Me.ListView1.ListItems.Clear
Application.Workbooks.Open chemindacces
Do Until Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 1) = ""
donnee1 = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 1)
donnee2 = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 2)
Me.ListView1.ListItems.Add donnee1
Me.ListView1.ListItems(i - 1, 1) = donnee2
i = i + 1
Loop
Application.Workbooks(nomclasseursource).Close
Application.ScreenUpdating = True 'On rétablit les mises à jour de l'affichage.
'--------------------------------------------------
'Spécifie l'affichage en mode "Détails"
ListView1.View = lvwReport
'Affichage d'un quadrillage dans la ListView
ListView1.Gridlines = True
'Surligne la ligne entière selectionnée
ListView1.FullRowSelect = True
End SubBonsoir silver.beach
sans avoir tester ta macro
pour moi la valeur i n'est pas mise a 1 au début de macro
donc la .cell(i,1) n'existe pas d'où l'erreur 1004
Cordialement
Bob
Bonjour Bob,
J'ai reuss a afficher la 1ere ligne de ma base de données dans ma listview avec le code suivant :
'LISTVIEW DE SUIVI
Private Sub UserForm_Initialize()
Dim nomclasseursource As String
Dim nomfeuillesource As String
Dim chemindacces As String
Dim i As Long
Dim N°Reclamation As String
Dim Datedujour As String
Dim Service As String
Dim Initiale As String
Dim DepartementSuivi As String
Dim TypeSuivi As String
Dim DateRéclamation As String
Dim CodeClient As String
Dim NomInterlocuteur As String
Dim N°circuit As String
Dim NatureSuivi As String
Dim ObservationNature As String
Dim ActionMenee As String
Dim ObservationActionMenee As String
nomclasseursource = "BaseDeDonnées"
nomfeuillesource = "Base de données" 'Le nom de la feuille contenant les données dans le classeur source.
chemindacces = "K:\Repertoire Commun\Arnaud\Excel\VBA\BaseDeDonnées.xls"
On Error Resume Next
Set Base = Workbooks("BaseDeDonnées.xls")
If Err.Number <> 0 Then
Workbooks.Open "K:\Repertoire Commun\Arnaud\Excel\VBA\BaseDeDonnées.xls"
Err.Clear
End If
Application.ScreenUpdating = False
Workbooks("BaseDeDonnées").Activate
Application.Workbooks.Open chemindacces
Do Until Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 1) = ""
N°Reclamation = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 1)
Datedujour = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 2)
Service = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 3)
Initiale = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 4)
DepartementSuivi = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 5)
TypeSuivi = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 6)
DateReclamation = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 7)
CodeClient = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 8)
NomInterlocuteur = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 9)
N°circuit = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 10)
NatureSuivi = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 11)
ObservationNature = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 12)
ActionMenee = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 13)
ObservationActionMenee = Application.Workbooks(nomclasseursource).Worksheets(nomfeuillesource).Cells(i, 14)
i = i + 1
Loop
Application.Workbooks(nomclasseursource).Close
Application.ScreenUpdating = True 'On rétablit les mises à jour de l'affichage.
'----- Mise en page ListView------------------------
With ListView1
'Définit le nombre de colonnes et Entêtes
With .ColumnHeaders
'Supprime les anciens entêtes
.Clear
'Ajoute 3 colonnes en spécifiant le nom de l'entête
'et la largeur des colonnes
.Add , , "N°reclamation", 50
.Add , , "Date du jour", 70
.Add , , "Service", 50
.Add , , "Initiale", 40
.Add , , "Dépt", 30
.Add , , "Type", 50
.Add , , "Date de réclamation", 80
.Add , , "Code client", 50
.Add , , "Nom Interlocuteur", 80
.Add , , "N°Circuit", 50
.Add , , "Nature", 50
.Add , , "Obser Nature", 90
.Add , , "Action menée", 50
.Add , , "Obser Action", 120
End With
'-----------------------------------------------------
'Spécifie l'affichage en mode "Détails"
ListView1.View = lvwReport
'Affichage d'un quadrillage dans la ListView
ListView1.Gridlines = True
'Surligne la ligne entière selectionnée
ListView1.FullRowSelect = True
'---Copie des données---------------------------------
'Remplissage de la colonne Date du jour
With .ListItems
.Add , , N°Reclamation
End With
'Remplissage des colonnes
.ListItems(1).ListSubItems.Add , , Datedujour
.ListItems(1).ListSubItems.Add , , Service
.ListItems(1).ListSubItems.Add , , Initiale
.ListItems(1).ListSubItems.Add , , DepartementSuivi
.ListItems(1).ListSubItems.Add , , TypeSuivi
.ListItems(1).ListSubItems.Add , , DateReclamation
.ListItems(1).ListSubItems.Add , , CodeClient
.ListItems(1).ListSubItems.Add , , NomInterlocuteur
.ListItems(1).ListSubItems.Add , , N°circuit
.ListItems(1).ListSubItems.Add , , NatureSuivi
.ListItems(1).ListSubItems.Add , , ObservationNature
.ListItems(1).ListSubItems.Add , , ActionMenee
.ListItems(1).ListSubItems.Add , , ObservationActionMenee
End With
End SubMaintenant le problème que je rencontre est qu'il ne m'affiche QUE la 1ere ligne, alors que j'aimerai qu'il m'affiche les données de la ligne 1 à 7000.
J'ai remplacé Cells (1, 1) par Columns("A:A") mais la du coup la colonne dans ma listview est vide alors qu'il y a des données dans ma BDD...
Tu peux m'aider ?
-- 18 Mai 2010, 11:29 --
En fait il m'affiche toujours la derniere ligne présente dans ma BDD. Alors que je voudrais qu'il m'affiche toutes les lignes de la feuille (les lignes précédentes)
Bonsoir silver.beach
tu dis de remplir la listview de la façon suivante
.ListItems(1).ListSubItems.Add , , Datedujour
cela veut dire que pour chaque ligne de ta BBD tu rempli la ligne 1 de la listview
donc je pense que dans ton cas si tu commence avec i=1
alors remplace .listview(1) par .listview(i)
si cela ne fonctionne pas, post tes fichiers sans données personnelles que je test sans tout refaire
cordialement
Bob
C'est bon tous fonctionnement !! Ouf !!
Merci beaucoup de votre aide