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 -
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

  1. Utilisateur anonyme
     
    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
    1. Hasstag Messages postés 7 Statut Membre
       
      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
      1. Utilisateur anonyme > Hasstag Messages postés 7 Statut Membre
         
        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
      2. Utilisateur anonyme > Utilisateur anonyme
         
                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
    2. Hasstag Messages postés 7 Statut Membre
       
      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