Bonjour à tous,
Je sais que le sujet à été discuté dans tout les sens sur le forum, mais je n'ai jamais trouvé une explication complète sur le phénomène:

Mon appli doit ouvrir un fichier Excel, faire deux ou trois manip dedans (genre supprimer des colonnes, des lignes,...) , sauvegarder le fichier en csv (séparateur point virgule) puis le fermer.
Cette procédure se trouve dans une boucle qui permet d'exécuter ce traitement sur tout les fichiers Excel qui se trouvent dans un dossier.
Voici le 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
32
33
34
35
36
37
38
39
40
41
42
43
Private Sub Button_Executer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Executer.Click
        Dim appExcel As Excel.Application 'Application Excel
        Dim wbExcel As Excel.Workbook 'Classeur Excel
        Dim wsExcel As Excel.Worksheet  'Feuille Excel
 
        Dim TheFile As String 'Variable pour le nom du fichier
        Dim NewFile As String 'Variable pour le nom du fichier transformé
        Dim Rep As String
 
 
        appExcel = CreateObject("Excel.Application")
        Rep = Me.Tb_Path_Source.Text
        TheFile = Dir(Rep & "\*.xlsx")   'Listing des fichier Excel...
        While TheFile <> "" 'Tant que non vide
            'Ouverture d'un fichier Excel
            wbExcel = appExcel.Workbooks.Open(Rep & "\" & TheFile)
            'wsExcel correspond à la première feuille du fichier
            wsExcel = wbExcel.Worksheets(1)
 
            '#####################################################################################################################
            'Mon code de traitement sur wsExcel
            '#####################################################################################################################
 
            'Ce if permet de tronquer le nom du fichier pour eviter qu'il soit trop long
            If Len(TheFile) > 50 Then
                TheFile = Strings.Left(TheFile, 40)
                NewFile = TheFile & "~"
            Else
                NewFile = Microsoft.VisualBasic.Left(TheFile, InStrRev(TheFile, ".") - 1)
            End If
 
            ChDir(Me.Tb_Path_Compil.Text)
            wbExcel.SaveAs(Filename:= _
                Me.Tb_Path_Compil.Text & "\" & NewFile & ".csv", FileFormat:=Excel.XlFileFormat.xlCSVWindows)
            wsExcel.Delete()
            wbExcel.Close(SaveChanges:=False)
            appExcel.Quit()
            wsExcel = Nothing
            wbExcel = Nothing
            appExcel = Nothing
            TheFile = Dir() 'Fichier suivant
        End While
    End Sub
J'ai essayé des tas de choses mais rien y fait, j'ai toujours ce fichu processus Excel qui reste dans le gestionnaire des tâches.
Je me demande si ça vient du fait que je fait un SaveAs et que j'enregistre non pas en xls (ou xlsx) mais en csv...

Est-ce que quelqu'un pourrait me conseiller?

Merci d'avance !