Décaler les cellules vers le haut, fichier excel VB.NET

Résolu/Fermé
Hasstag Messages postés 7 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 24 juillet 2015 - 17 juil. 2015 à 11:50
Hasstag Messages postés 7 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 24 juillet 2015 - 24 juil. 2015 à 10:13
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.
A voir également:

2 réponses

Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 928
17 juil. 2015 à 13:35
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
0
Hasstag Messages postés 7 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 24 juillet 2015
Modifié par Whismeril le 21/07/2015 à 21:48
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.
0
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 928 > Hasstag Messages postés 7 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 24 juillet 2015
21 juil. 2015 à 21:56
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.
0
Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024 928 > Whismeril Messages postés 19021 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 avril 2024
21 juil. 2015 à 22:19
        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
0
Hasstag Messages postés 7 Date d'inscription vendredi 17 juillet 2015 Statut Membre Dernière intervention 24 juillet 2015
24 juil. 2015 à 10:13
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
21 juil. 2015 à 12:03
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
0