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 Sub

Bonsoir 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 Sub

Maintenant 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

Rechercher des sujets similaires à "importation donnee listview"