Supprimer une feuille de classeur Excel depuis VB.net

Résolu/Fermé
voulfka1688 Messages postés 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 - Modifié par voulfka1688 le 27/09/2013 à 00:29
voulfka1688 Messages postés 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 - 22 oct. 2013 à 17:37
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
27 sept. 2013 à 07:52
Bonjour,

wbExcel.Worksheets.Delete() Avez-vous mis le nom de la feuille a deleter: wbExcel.Worksheets.Delete("nomdelafeuille") ?????
0
voulfka1688 Messages postés 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 1
27 sept. 2013 à 20:57
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
28 sept. 2013 à 07:33
Bonjour,

essayez sans les () a la fin:

wbExcel.Worksheets("Feuilakill").Delete
0
voulfka1688 Messages postés 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 1
28 sept. 2013 à 22:37
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
29 sept. 2013 à 06:58
Bonjour,

Bonjour, voilà dans le développement de mon application, Vous developpez en quel langage ?????
0
voulfka1688 Messages postés 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 1
29 sept. 2013 à 10:28
en VB.net depuis Microsoft Visual Basic 2008
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
29 sept. 2013 à 10:47
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 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 1
3 oct. 2013 à 20:33
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 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 1
Modifié par voulfka1688 le 3/10/2013 à 20:39
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 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
4 oct. 2013 à 07:41
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 55 Date d'inscription jeudi 15 novembre 2012 Statut Membre Dernière intervention 9 mai 2020 1
22 oct. 2013 à 17:37
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