Salut a tous ! je suis en bts informatique et actuellement en stage je dois réaliser une appli en vb.net qui travail avec des fichiers excel .

Pour expliquer simplement l'utilisateur via une combobox ajoute des lignes dans ma list view , jusque la pas de problème , Ensuite j'ai fait un bouton enregistré , qui doit enregistré la totalité de ma listview dans un fichier excel .

Je travaille avec visual studio 2010 ultimate

Quand j'utilise uniquement mon code pour enregistré une ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
        Dim j As Integer
        dim i as Integer
 
        i = 3
        j = 0
 
        appli.Workbooks.Open(ClasseurFavoris) ' ouverture du fichier excel.
        Feuille = CType(appli.ActiveWorkbook.Worksheets(utilisateur), xls.Worksheet) ' je choisit l'onglet du classeur excel
        Feuille.Cells(i, 1).Value = (ListView_Favoris.Items(j).SubItems(0).Text)
        Feuille.Cells(i, 2).Value = (ListView_Favoris.Items(j).SubItems(1).Text)
        Feuille.Cells(i, 3).Value = (ListView_Favoris.Items(j).SubItems(2).Text)
Cela fonctionne il enregistre bien la ligne complète de ma listview dans mon fichier excel a savoir 3 donné ( Affaire/Client/Intitulé)

Ensuite j'ai donc fait une boucle pour pouvoir enregistré toutes mes lignes de ma listview

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 Private Sub Button_Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Save.Click
 
        Dim j As Integer
        Dim b As Boolean
 
        i = 3
        j = 0
        b = False
 
        appli.Workbooks.Open(ClasseurFavoris) ' ouverture du fichier excel.
        Feuille = CType(appli.ActiveWorkbook.Worksheets(utilisateur), xls.Worksheet) ' choix de l'onglet à l'intérieur du classeur
 
        ' -----------------------------boucle qui enregistre la liste des favoris choisit par l'utilisateur dans un fichier excel . --------------------------------------
 
        While b = False
 
            If ListView_Favoris.Items(j) Is Nothing Then  
                b = True                ' Si la case de la listview est vide alors on change la condition ( false => true) , quitte la boucle et on ferme excel
 
                Try
                    appli.Visible = False           '
                    appli.Workbooks(1).Save()       '
                    appli.DisplayAlerts = False     '   fermeture d'excel
                    appli.Quit()                    '
                    appli = Nothing                 '
                Catch ex As Exception
 
                End Try
 
            Else
 
                Feuille = CType(appli.ActiveWorkbook.Worksheets(utilisateur), xls.Worksheet)
                Feuille.Cells(i, 1).Value = (ListView_Favoris.Items(j).SubItems(0).Text)
                Feuille.Cells(i, 2).Value = (ListView_Favoris.Items(j).SubItems(1).Text)
                Feuille.Cells(i, 3).Value = (ListView_Favoris.Items(j).SubItems(2).Text)
 
                i = i + 1
                j = j + 1
 
            End If
        End While
 
                Try
                    appli.Visible = False           '
                    appli.Workbooks(1).Save()       '
                    appli.Workbooks(2).Save()       '
                    appli.DisplayAlerts = False     '   Fermeture d'excel
                    appli.Quit()                    '
                    appli = Nothing                 '
                Catch ex As Exception
                End Try
 
        i = 3
        j = 0
        b = False
 
    End Sub
Et la j'ai un plantage j'imagine que c'est ma "boucle" qui est mauvaise , je crois que mon erreur est a la ligne " If ListView_Favoris.Items(j) Is Nothing Then " car sa me met l'index n'est pas une valeur disponible ...

Merci d'avance de votre aide