Bonjour,
Désolé pour le manque de clarté du titre, je ne voyais pas comment le synthétiser.
J'aimerais savoir s'il est possible de regrouper toutes les feuilles d'un classeur (.xls / .xlsx) en une seule et même feuilles afin de pouvoir transformer le fichier en .csv
Par exemple, la feuille 1 contient 6 lignes, la 2 en contient 8 et la 3 en contient 12, ces 3 feuilles seraient regroupés en une seule feuille de 26 lignes.
Merci d'avance
.
EDIT: Je me suis lancé dans l'idée d'exécuter une macro VBA via VB.NET, macro permettant de fusionner les onglets. Je pense que cette méthode sera plus efficace.
EDIT 2: J'ai réussie avec cette méthode...
Macro VBA:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Option Explicit
Sub FusionOnglets()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "Recap" Then
Application.ScreenUpdating = False
ws.Activate
Range("A1:" & [a1].SpecialCells(xlCellTypeLastCell).Address).Copy
Sheets("Recap").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End If
Next ws
End Sub |
N'oubliez pas de mettre "Recap" en première feuille...
Démarrage de la macro:
1 2 3 4 5 6 7 8 9 10 11 12 13
| Dim ExcelApplication As New Excel.Application
Dim ExcelWrkBook As Excel.Workbook
ExcelApplication.Visible = False
ExcelApplication.DisplayAlerts = False
ExcelWrkBook = ExcelApplication.Workbooks.Open("C:\Exemple.xls")
ExcelApplication.Run("FusionOnglets")
ExcelWrkBook.SaveAs(Filename:="C:\Exemple.xlc", FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlCSV)
ExcelApplication.Workbooks.Close()
ExcelApplication = Nothing
ExcelWrkBook = Nothing |
Cependant, il me reste toujours un petit problème, même assez important, bien que n'entravant pas le fonctionnement du programme. Après chaque exécution du programme, j'ai deux processus "EXCEL.exe" qui sont créés.
J'ai essayé de mettre:
1 2
| ExcelApplication = Nothing
ExcelWrkBook = Nothing |
ou
ExcelApplication.Workbooks.Close()
mais rien n'y fait x).
Quelqu'un aurait-il une idée sur comment résoudre ce problème s'il vous plait?
Merci.
Partager