Quelqu'un sait comment décaler les cellules dans un fichier excel vers le haut. En fait, j'ai fichier excel et je supprime des fois le contenu des cellules au milieu du fichier et je veux faire disparaitre les ligne vide.
J'ai essayé mais ça ne marche pas. voici mon code en VB.NET
Dim xlsapp As Microsoft.Office.Interop.Excel.Application
Dim Xlsbook As Microsoft.Office.Interop.Excel.Workbook
Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet
Dim misValue As Object = System.Reflection.Missing.Value
xlsapp = New Microsoft.Office.Interop.Excel.Application
Xlsbook = xlsapp.Workbooks.Open("\\vmware-host\Shared Folders\Bureau\KOTTMANNBDOX.xls")
xlWorkSheet = Xlsbook.Sheets(1)
Dim DEL = xlWorkSheet.Rows.Count - 1
For i = 1 To DEL
If xlWorkSheet.Cells(DEL, 1).Value = Nothing Then
xlWorkSheet.Rows(DEL, 1).Delete(Ascending)
End If
Next
Xlsbook.Save()
Xlsbook.Close()
Xlsbook = Nothing
xlsapp.Quit()
xlsapp = Nothing
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
killExl()
ReleaseObject(xlsapp)
ReleaseObject(Xlsbook)
ReleaseObject(xlWorkSheet)
Bonsoir, dans la source que je t'ai mise en lien, la méthode Delete() est accessible depuis un objet Range, pas d'un objet Row.
Il faut d'abord sélectionner le range correspondant à une ligne.
For i = 1 To 30
If xlWorkSheet.Cells(i, 1).Value = Nothing Then 'd'abord c'est i qu'il faut mettre ici et pas ta variable del
Dim range As Microsoft.Office.Interop.Excel.Range
range = xlWorkSheet.Range(i & ":" & i) 'selection du range
range.Delete(Microsoft.Office.Interop.Excel.XlDeleteShiftDirection.xlShiftUp) 'suppression du range
End If
Next
Je n'ai pas utilisé xlWorkSheet.Rows.Count, car ça te retourne non pas le nombre de lignes utilisées mais le nombre de lignes de base d'une feuille, soit 1048576 pour ma version d'excel
xlWorkSheet.Rows.Count marche bien pour moi (Excel 2013).
La solution que j'ai adopté pour ce problème c'est de supprimer une ligne et recopier les autres une par une dans la cellule supérieure de chaque cellule et enfin, supprimer la dernière ligne qui reste vide.
Merci pour ta réponse.
J'ai essayé mais ça ne marche pas. voici mon code en VB.NET
EDIT: Ajout de la coloration syntaxique.
Il faut d'abord sélectionner le range correspondant à une ligne.
Je n'ai pas utilisé xlWorkSheet.Rows.Count, car ça te retourne non pas le nombre de lignes utilisées mais le nombre de lignes de base d'une feuille, soit 1048576 pour ma version d'excel
xlWorkSheet.Rows.Count marche bien pour moi (Excel 2013).
La solution que j'ai adopté pour ce problème c'est de supprimer une ligne et recopier les autres une par une dans la cellule supérieure de chaque cellule et enfin, supprimer la dernière ligne qui reste vide.
Merci pour ton aide.