Décaler les cellules vers le haut, fichier excel VB.NET [Résolu/Fermé]

Signaler
Messages postés
7
Date d'inscription
vendredi 17 juillet 2015
Statut
Membre
Dernière intervention
24 juillet 2015
-
Messages postés
7
Date d'inscription
vendredi 17 juillet 2015
Statut
Membre
Dernière intervention
24 juillet 2015
-
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.

2 réponses

Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
642
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
Messages postés
7
Date d'inscription
vendredi 17 juillet 2015
Statut
Membre
Dernière intervention
24 juillet 2015

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.
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
642 >
Messages postés
7
Date d'inscription
vendredi 17 juillet 2015
Statut
Membre
Dernière intervention
24 juillet 2015

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.
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021
642 >
Messages postés
15393
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
16 janvier 2021

        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
Messages postés
7
Date d'inscription
vendredi 17 juillet 2015
Statut
Membre
Dernière intervention
24 juillet 2015

Bonjour,

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.
Messages postés
7202
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 janvier 2021
598
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