IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Supprimer des lignes dans une feuille Excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 128
    Par défaut Supprimer des lignes dans une feuille Excel
    Bonjour à tous,

    Je souhaiterais supprimer une plage de ligne d'un fichier XLS dans une application VB.NET, en parcourant internet j'ai trouvé quelques bouts de codes mais aucun de fonctionnel dans mon cas même avec les modifications que j'ai trouvé sur internet :

    Mes imports :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Imports System.Data.OleDb
    Imports Microsoft.Office.Interop.Excel
    Imports Microsoft.Office.Interop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
     
            'Instantiate a Workbook object.
            Dim workbook As Workbook
            workbook = New Workbook()
     
            'workbook = New Workbook()
            'Load a template file.
            workbook.Open(destination)
            'Get the first worksheet in the book.
            Dim sheet1 As Worksheet = workbook.Worksheets(1)
            sheet1.Cells.DeleteRows(10, 200)
            Dim sheet2 As Worksheet = workbook.Worksheets(2)
            sheet2.Cells.DeleteRows(10, 200)
     
            'Save the excel file.
            workbook.Save()
    Celui ci me donne l'erreur
    80040154 La récupération de la fabrique de classe COM pour le composant avec le CLSID" sur la ligne "workbook = New Workbook()

    Et cet autre code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim oExcel As New Microsoft.Office.Interop.Excel.Application
            Dim oBook As Microsoft.Office.Interop.Excel.Workbook
            Dim oSheet As Microsoft.Office.Interop.Excel.Worksheet
            oBook = oExcel.Workbooks.Open(destination)
            oSheet = oBook.Worksheets(2)
            Dim rg1 As Excel.Range = oSheet.Rows("10:10") ' delete the specific row
            rg1.Select()
            rg1.Delete()
            oBook.Save()
            oExcel.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel)
            oBook = Nothing
            oExcel = Nothing

    Me donne cette erreur
    La méthode Select de la classe Range a échoué." sur la ligne "rg1.Select()
    Auriez vous des pistes sur un code utilisable ou des conseils pour faire fonctionner ces codes ?

    D'avance merci !

  2. #2
    Membre éclairé Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Par défaut
    Bonjour,
    Pour le premier code il m'apparait que l'initation des objets est mal faite:
    sera de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim appExcel As Excel.Application
            Dim sheet As Excel.Worksheet
            Dim workbook As Excel.Workbook 'Classeur Excel
            appExcel = CreateObject("Excel.Application")
            workbook = appExcel.Workbooks.Open("chemin")
            sheet = appExcel.ActiveWorkbook.ActiveSheet
            sheet = workbook .Worksheets(1)
    J'ai testé ce code qui sert à supprimer les lignes, ca fonctionne bien:
    "un exemple à l'adapter à ton besoin"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For x = 142 To 1 Step -1
                If sheet.Cells(x, "A").Value = "test" Then
                    sheet.Rows(x).delete()
                End If
            Next

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut delete,range,entirerow,interface range
    bobjour thefuture
    voici le code qui fonctionne avec quelques corrections:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Imports OXL = Microsoft.Office.Interop.Excel
    Public Class Form1
        Dim cheminFichier As String = ""
        Dim appExcel As OXL.Application
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim openDLG As New OpenFileDialog
            openDLG.Filter = "Fichiers Excel(*.xls)|*.xls"
            If openDLG.ShowDialog = System.Windows.Forms.DialogResult.OK Then
                cheminFichier = openDLG.FileName
                If Len(cheminFichier) = 0 Then
                    Exit Sub
                End If
            End If
            'si il ya une application excel en cours la fermer
            If appExcel IsNot Nothing Then
                appExcel.Quit()
                appExcel = Nothing
            End If
            appExcel = New OXL.Application
            Dim oBook As OXL.Workbook
            Dim oSheet As OXL.Worksheet
            oBook = appExcel.Workbooks.Open(cheminFichier)
            oSheet = oBook.Worksheets(1)
            'Affiche AppExcel
            appExcel.Visible = True
            'Initialise l'interface Range svp
            Dim Rng1 As OXL.Range = Nothing
            'CAS D'UNE SEULE LIGNE
            Rng1 = oSheet.Cells(1, 1) ' Selectionner Cellule Initiale ligne
            Rng1.EntireRow.Select()   ' Etend Selection à toute la ligne
            Rng1.EntireRow.Interior.Color = ColorTranslator.ToWin32(Color.Aquamarine)
            'Delete entire row selected
            Rng1.EntireRow.Delete()
            'CAS DE PLUSIEURS LIGNES
            Dim Rng2 As OXL.Range = Nothing
            Rng2 = oSheet.Range(oSheet.Cells(4, 4), oSheet.Cells(6, 6)) ' Selectionner Cellules Initiales de lignes
            Rng2.EntireRow.Select()  ' Etend Selection à toutes les lignes
            Rng2.EntireRow.Interior.Color = ColorTranslator.ToWin32(Color.Chocolate)
     
            oBook.Save()
            appExcel.Quit()
            System.Runtime.InteropServices.Marshal.ReleaseComObject(oBook)
            System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel)
            oBook = Nothing
            appExcel = Nothing
        End Sub
     
     
    End Class
    bon code.......

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/03/2014, 13h39
  2. Réponses: 5
    Dernier message: 11/08/2008, 15h25
  3. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  4. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35
  5. Sélection de lignes dans une feuille Excel
    Par lerico dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 09h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo