Supprimer une feuille de classeur Excel depuis VB.net

Résolu
voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -  
voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, voilà dans le développement de mon application, je rencontre une difficulté majeur.

Je m'explique :

Je souhaite que l'utilisateur affiche certaines informations contenues dans une feuille Excel, il peut passer à la suivante dès qu'il le souhaite, jusque là pas de souci. Mais je souhaite aussi qu'il puisse supprimer une feuille qui ne lui plait pas. Et là ... sa coince...

Dans mon fichier Excel j'ai beau avoir 3 feuilles il m'indique cette erreur "Un classeur doit contenir au moins une feuille visible. Pour masquer, supprimer ou déplacer les feuilles sélectionnées, insérez d'abord une nouvelle feuille ou affichez une feuille masquée."

Et à ce moment là, je m'exclame "Mais questu me raconte ?! y'en a 3 feuilles t'es c** ou quoi ??!!" et cela fait deux soir que je m'acharne ....

pitié aidez moi !!!

Merci.

PS: voici la ligne qui génère l'erreur : "wbExcel.Worksheets.Delete()"

9 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    wbExcel.Worksheets.Delete() Avez-vous mis le nom de la feuille a deleter: wbExcel.Worksheets.Delete("nomdelafeuille") ?????
    0
  2. voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   1
     
    En effet, j'ai mis

    wbExcel.Worksheets(numfeuil).name = "Feuilakill" <-- je renomme pour être sur
    wbExcel.Worksheets("Feuilakill").Delete() <---- je demande la suppression
    wbExcel.Close() <--- je ferme le classeur et je provoque une fenêtre qui me demande si je souhaite enregistrer. (évidement je dis oui) mais quand j'ouvre le fichier excel la page a bien été renommé cela est sur mais ... elle est toujours là.

    et lorsque que je met le nom ici : wbExcel.Worksheets.Delete("Feuilakill")
    il m'indique "Arguments trop nombreux pour 'Public Sub Delete()'.
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    essayez sans les () a la fin:

    wbExcel.Worksheets("Feuilakill").Delete
    0
  4. voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   1
     
    il me les rajoute automatiquement snif
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Bonjour, voilà dans le développement de mon application, Vous developpez en quel langage ?????
    0
  7. voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   1
     
    en VB.net depuis Microsoft Visual Basic 2008
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    en suivant ce lien, vous aurez un exemple de pilotage excel via vb.net, par contre pas de delete de feuille. Regardez vos declarations de variable etc ...

    https://support.microsoft.com/en-us/help/301982

    A defaut, montrez le code complet pour que nous puissions comprendre.

    A+
    0
  9. voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   1
     
    Bonjour, après de multiple tentative et recherche voici l'intégralité de mon code car je n'ai toujours pas trouvé de solution ....

    En espérant que vous trouviez ce qui cloche.

    Imports Microsoft.Office
    Imports Microsoft.Office.Interop
    Imports Microsoft.Office.Interop.Excel
    Public Class Gestion
    Dim nbagent As Integer
    Dim ligne As Integer = 2
    Dim compteurappli As Integer = 0
    Dim temp As String
    Dim Basedonnees2 As String
    Dim numfeuil As Integer

    Private Sub Gestion_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    temp = Form1.basedonnees

    Basedonnees2 = temp.Replace("db.xlsx", "db2.xls")

    numfeuil = 1
    ''Lignes de base...
    Label3.Text = numfeuil

    Try
    choixclient.appExcel = New Excel.Application
    choixclient.wbExcel = choixclient.appExcel.Workbooks.Open(Basedonnees2) 'path: le chemin d'accès à ton fichier
    choixclient.wsExcel = choixclient.wbExcel.Worksheets(numfeuil)
    Label2.Text = choixclient.wsExcel.Cells(2, 7).value.ToString
    TextBox1.Text = choixclient.wsExcel.Cells(2, 8).Value.ToString
    TextBox2.Text = choixclient.wsExcel.Cells(2, 2).value.ToString
    TextBox3.Text = choixclient.wsExcel.Cells(2, 3).value.ToString
    TextBox4.Text = choixclient.wsExcel.Cells(2, 4).value.ToString
    TextBox5.Text = choixclient.wsExcel.Cells(2, 5).Value.ToString
    TextBox6.Text = choixclient.wsExcel.Cells(2, 6).value.ToString

    Catch ex As Exception
    MessageBox.Show(ex.ToString())
    End Try

    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    choixclient.wbExcel.Worksheets(numfeuil).name = "Feuilakill"
    choixclient.wbExcel.Worksheets("Feuilakill").Select
    choixclient.wbExcel.Worksheets.Delete()
    choixclient.wbExcel.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    numfeuil = numfeuil + 1
    Try
    choixclient.wsExcel = choixclient.wbExcel.Worksheets(numfeuil)
    Label2.Text = choixclient.wsExcel.Cells(2, 7).value.ToString
    TextBox1.Text = choixclient.wsExcel.Cells(2, 8).Value.ToString
    TextBox2.Text = choixclient.wsExcel.Cells(2, 2).value.ToString
    TextBox3.Text = choixclient.wsExcel.Cells(2, 3).value.ToString
    TextBox4.Text = choixclient.wsExcel.Cells(2, 4).value.ToString
    TextBox5.Text = choixclient.wsExcel.Cells(2, 5).Value.ToString
    TextBox6.Text = choixclient.wsExcel.Cells(2, 6).value.ToString

    Catch ex As Exception
    MessageBox.Show(ex.ToString())
    End Try

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

    choixclient.wbExcel.Close()
    choixclient.appExcel.Quit()
    End Sub
    End Class
    0
    1. voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   1
       
      Précisions :
      La variable "basedonnees" contient le chemin de mon fichier excel (initial) je remplace juste le nom du fichier par mon deuxième fichier excel qui se trouve dans le même dossier. Elle est déclaré dans une autre windowsform

      Les variables appExcel, wbExcel, et wsExcel sont également déclarés depuis une autre windowsform nommé "choixclient"
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      site :

      https://docs.microsoft.com/en-us/visualstudio/vsto/how-to-programmatically-delete-worksheets-from-workbooks?redirectedfrom=MSDN&view=vs-2019#code-snippet-1

      Pour supprimer une feuille de calcul à l'aide de la collection Sheets du classeur Excel

      Appelez la méthode Delete de la collection Sheets.

      CType(Me.Application.ActiveWorkbook.Sheets(4), Excel.Worksheet).Delete()

      A voir
      0
  10. voulfka1688 Messages postés 53 Date d'inscription   Statut Membre Dernière intervention   1
     
    Bonjour,

    Solution enfin trouvé !!!

    il faut simplement ceci : myworksheet.Application.DisplayAlerts = false

    La musiquette faisait vraisemblablement apparaître une fenêtre mais celle étant invisible ^^ fallait la voire !!!

    Mon problème est résolu, merci a vous tous.

    Cordialement.
    0