VBA qupprimer une feuille sur un classeur non
Résolu
zewriggles
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
zewriggles -
zewriggles -
Bonjour,
Je dois faire un programme pour faciliter le travail d'un camarade. Ce programme est simple il suffit de marquer le numéro d'une semaine et un type de fichier (ici excel) et appuyer sur le bouton valider. Après tout doit se faire tout seul. Maintenant mon seul probléme est que pour les deux fichiers xls que j'ouvre je veux supprimer certaines feuille sauf celle s'appelant "sem16" (par exemple) ou "Feuil1". Le probléme est que mes lignes de code sont bonne mais, elle ne supprime pas les feuilles de mes classeurs mais celle de mon classeur où se trouve mon bouton. voici les lignes de code que j'ai faites.Aidez-moi s'il vous plait!!!
Dim appExcel As excel.Application 'Application Excel
Dim wbExcel As excel.Workbook 'Classeur Excel
Dim wsExcel As excel.Worksheet 'Feuille Excel
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("B:\Texte et excel\Fichier excel\recap_042009.xls")
nbrfeuille = wbExcel.Worksheets.Count
MsgBox ("nbrfeuille = " & nbrfeuille)
i = 1
Do While i <> nbrfeuille
wbExcel.Activate
nbrfeuille = wbExcel.Worksheets.Count
Set wsExcel = wbExcel.Worksheets(i)
MsgBox ("nbrfeuille = " & nbrfeuille)
If wsExcel.Name <> "sem" & sem And wsExcel.Name <> "Feuil1" Then
wsExcel.activate
'nomfeuille = wbExcel.Worksheets(i)
wsExcel.Delete
Worksheets(i).Delete
Else
i = i + 1
wsExcel.Name = "Feuil1"
End If
Loop
Je dois faire un programme pour faciliter le travail d'un camarade. Ce programme est simple il suffit de marquer le numéro d'une semaine et un type de fichier (ici excel) et appuyer sur le bouton valider. Après tout doit se faire tout seul. Maintenant mon seul probléme est que pour les deux fichiers xls que j'ouvre je veux supprimer certaines feuille sauf celle s'appelant "sem16" (par exemple) ou "Feuil1". Le probléme est que mes lignes de code sont bonne mais, elle ne supprime pas les feuilles de mes classeurs mais celle de mon classeur où se trouve mon bouton. voici les lignes de code que j'ai faites.Aidez-moi s'il vous plait!!!
Dim appExcel As excel.Application 'Application Excel
Dim wbExcel As excel.Workbook 'Classeur Excel
Dim wsExcel As excel.Worksheet 'Feuille Excel
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("B:\Texte et excel\Fichier excel\recap_042009.xls")
nbrfeuille = wbExcel.Worksheets.Count
MsgBox ("nbrfeuille = " & nbrfeuille)
i = 1
Do While i <> nbrfeuille
wbExcel.Activate
nbrfeuille = wbExcel.Worksheets.Count
Set wsExcel = wbExcel.Worksheets(i)
MsgBox ("nbrfeuille = " & nbrfeuille)
If wsExcel.Name <> "sem" & sem And wsExcel.Name <> "Feuil1" Then
wsExcel.activate
'nomfeuille = wbExcel.Worksheets(i)
wsExcel.Delete
Worksheets(i).Delete
Else
i = i + 1
wsExcel.Name = "Feuil1"
End If
Loop
A voir également:
- VBA qupprimer une feuille sur un classeur non
- Comment supprimer une feuille sur word - Guide
- Comment imprimer en a5 sur une feuille a4 - Guide
- Bruler une feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Imprimer feuille excel sur une page - Guide
2 réponses
Bonjour,
Est-ce que votre code est dans un module ou derrière une feuille !
J'aurais tendance a penser que le code est derrière une feuille, puisque tu dis
qu'il est appeller par un bouton.
Or pour travailler sur plus d'une feuille, il faut être dans un module.
Exemple type :
Derrière la feuille:
Dans un module [Module1] :
Lupin
Est-ce que votre code est dans un module ou derrière une feuille !
J'aurais tendance a penser que le code est derrière une feuille, puisque tu dis
qu'il est appeller par un bouton.
Or pour travailler sur plus d'une feuille, il faut être dans un module.
Exemple type :
Derrière la feuille:
Option Explicit Private Sub CommandButton1_Click() Call Module1.Validation End Sub '
Dans un module [Module1] :
Option Explicit Sub Validation() Dim wbExcel As Workbook Dim wsExcel As Worksheet 'Ouverture d'un fichier Excel Workbooks.Open ("B:\Texte et excel\Fichier excel\recap_042009.xls") Set wbExcel = ActiveWorkbook nbrfeuille = wbExcel.Worksheets.Count 'MsgBox ("nbrfeuille = " & nbrfeuille) For Each wsExcel In wbExcel.Worksheets If wsExcel.Name <> "sem" & sem And wsExcel.Name <> "Feuil1" Then wsExcel.Delete End If Loop End Sub '
Lupin
re:
J'ai initialisé les variables et le code fonctionne chez moi ???
Lupin
J'ai initialisé les variables et le code fonctionne chez moi ???
Option Explicit Sub Validation() Dim wbExcel As Workbook Dim wsExcel As Worksheet Dim sem As Long 'Ouverture d'un fichier Excel Workbooks.Open ("C:\Document\Excel\Test.xls") Set wbExcel = ActiveWorkbook sem = 1 For Each wsExcel In wbExcel.Worksheets If wsExcel.Name <> "sem" & sem And wsExcel.Name <> "Feuil1" Then Application.DisplayAlerts = False wsExcel.Delete Application.DisplayAlerts = True End If Next wsExcel End Sub '
Lupin
J'ai trouver une façon qui m'aller très bien je te la donne si ça peut te servir à toi ou a d'autres
Workbooks.Open ("cheminfichier")
ch = ActiveWorkbook.FullName
MsgBox ch
nbrfeuille = Sheets.Count
MsgBox ("nbrfeuille = " & nbrfeuille)
i = 1
Do While i <> nbrfeuille
nbrfeuille = Sheets.Count
Set maFeuille = Worksheets(i)
If maFeuille.Name <> "sem" & sem And maFeuille.Name <> "Feuil1" Then
Application.DisplayAlerts = False
maFeuille.Delete
Application.DisplayAlerts = True
Else
i = i + 1
maFeuille.Name = "Feuil1"
End If
Loop
'Sauvegarde et fermeture du fichier
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
ActiveWorkbook.Close
Workbooks.Open ("cheminfichier")
ch = ActiveWorkbook.FullName
MsgBox ch
nbrfeuille = Sheets.Count
MsgBox ("nbrfeuille = " & nbrfeuille)
i = 1
Do While i <> nbrfeuille
nbrfeuille = Sheets.Count
Set maFeuille = Worksheets(i)
If maFeuille.Name <> "sem" & sem And maFeuille.Name <> "Feuil1" Then
Application.DisplayAlerts = False
maFeuille.Delete
Application.DisplayAlerts = True
Else
i = i + 1
maFeuille.Name = "Feuil1"
End If
Loop
'Sauvegarde et fermeture du fichier
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
ActiveWorkbook.Close
Je viens d'essayer ce que tu m'a proposé Luîn, il est vrai que mes codes était sous une feuille maintenant il est sou un module comme tu me l'a dit et tout le monde me dit que c'est mieux. merci
parc ontre, les feuilles ne se supprime toujours pas et j'ai beau réfléchir et faire toute les tentative désespéré rien ne fonctionne. Est-ce que vous auriez une autre idéé?peut-être que mes fichiers ne sont pas bien ouvert?Est-ce qu'il serait possible de rendre visible que le fichier qui m'intéresse et après supprimer les feuilles par un activeworkbook?
PS : Juste une petite erreur sur ton code Lupin, c'est un next pour le for each, j'en suis sure que tu le savais toi même