Bonjour,
J'ai créer une petite application VB.NET qui ouvre un fichier Excel (Listing.xlsx) qui sert de modèle.
Je travaille avec VisualStudio 2010 et Excel version 2108 Microsoft 365.
C'est un tableau avec uniquement des titres dans la première ligne.
Comme je ne souhaite pas modifier ce fichier, j'utilise une boite de dialogue pour enregistrer une copie de celui-ci avec un nouveau nom (New_Listing.xlsx) en laissant également la possibilité de choisir l'emplacement.
Mon script rempli le tableau et lorsqu'il est terminé, celui-ci s'affiche.
Tout fonctionne sauf dans un cas, c'est si jamais l'utilisateur a lancé une première fois le script, que le fichier "New_Listing.xlsx" reste ouvert et qu'on relance le script.
Comme le fichier est ouvert, je ne parviens pas à l'écraser.
Donc juste avant de faire le "save as", j'ai ajouté une ligne pour fermer un eventuel fichier "New_Listing.xlsx" qui serait toujours ouvert.
J'ai rajouté un Try au cas où ce fichier doublon n'existerait pas mais j'ai une erreur sur cette nouvelle ligne où je tente de fermer le fichier ouvert.
Sur un forum, j'avais trouvé une idée intéressante, c'est d'utiliser la fonction kill, mais çà ne marche pas, je suppose que le kill efface le fichier uniquement si il n'est pas ouvert.
J'ai l'impression que le MsExcel est uniquement associé au fichier de départ "Listing.xlsx" et que l'utiliser pour aller lire un autre fichier n'est pas possible mais je ne comprends pas comment faire.
Voici mon code :
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 MsExcel = CreateObject("Excel.Application") MsExcel.DisplayAlerts = False Using sfd As SaveFileDialog = New SaveFileDialog() With {.InitialDirectory = "c:\users\" & Environment.UserName & "\Documents\", .FileName = "New_Listing", .Filter = "Excel Workbook|*.xlsx"} If sfd.ShowDialog() = DialogResult.OK Then Try MsExcel.Workbooks(sfd.FileName).close(False) 'Bug sur cette ligne Catch ex As Exception End Try MsExcel.workbooks.Open(Application.StartupPath & "\Listing.xlsx") MsExcel.Workbooks(1).SaveAs(sfd.FileName) Else MsExcel.quit() Exit Sub End If End Using MsExcel.DisplayAlerts = True ' ' Remplissage du tableau ' MsExcel.visible = True
Quelqu'un peut-il m'aider ?
Merci par avance.
Partager