Décaler les cellules vers le haut, fichier excel VB.NET
Résolu
Hasstag
Messages postés
7
Statut
Membre
-
Hasstag Messages postés 7 Statut Membre -
Hasstag Messages postés 7 Statut Membre -
Bonjour,
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.
Merci.
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.
Merci.
2 réponses
-
Bonjour,
j'ai posté une source C#, il y'a quelques années, dont un méthode permet de supprimer un range en choisissant le sens de décalage.
https://codes-sources.commentcamarche.net/source/50624-piloter-excel-via-microsoft-office-interop-excel
Tu peux la passer dans un traducteur en ligne
-
Bonjour,
Merci pour ta réponse.
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)
EDIT: Ajout de la coloration syntaxique.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
-
-
-
Bonjour,
Voir ceci pour piloter Excel.
Ensuite se servir de l'enregistreur de macro sous Excel et l'adapter en VB.Net
https://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net