Supprimer une feuille de classeur Excel depuis VB.net

Résolu
voulfka1688 Messages postés 62 Statut Membre -  
voulfka1688 Messages postés 62 Statut Membre -
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()"
A voir également:

9 réponses

f894009 Messages postés 17413 Statut Membre 1 715
 
Bonjour,

wbExcel.Worksheets.Delete() Avez-vous mis le nom de la feuille a deleter: wbExcel.Worksheets.Delete("nomdelafeuille") ?????
0
voulfka1688 Messages postés 62 Statut Membre 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
f894009 Messages postés 17413 Statut Membre 1 715
 
Bonjour,

essayez sans les () a la fin:

wbExcel.Worksheets("Feuilakill").Delete
0
voulfka1688 Messages postés 62 Statut Membre 1
 
il me les rajoute automatiquement snif
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f894009 Messages postés 17413 Statut Membre 1 715
 
Bonjour,

Bonjour, voilà dans le développement de mon application, Vous developpez en quel langage ?????
0
voulfka1688 Messages postés 62 Statut Membre 1
 
en VB.net depuis Microsoft Visual Basic 2008
0
f894009 Messages postés 17413 Statut Membre 1 715
 
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
voulfka1688 Messages postés 62 Statut Membre 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
voulfka1688 Messages postés 62 Statut Membre 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
f894009 Messages postés 17413 Statut Membre 1 715
 
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
voulfka1688 Messages postés 62 Statut Membre 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