cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
13 sept. 2007 à 21:59
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
14 sept. 2007 à 21:27
Bonsoir à tous,
Problème de suppression d'onglets dans un classeur Excel, par script vbs.
A partir d'un nouveau classeur Excel, je crée un onglet par jour ouvré d'une année.
J'arrive à supprimer les onglets "Feuil1" et "Feuil3" en début de script, puis
à supprimer le dernier onglet ("Feuil2").
Question:
Peut-on procéder différemment ???
Option Explicit
Dim objExcel, Annee, DateDeb, DateFin, NbreJours, i, j
Annee = InputBox("Année à créer:","Création du Classeur",Year(Date))
'ici suppression de Feuil1 et Feuil3
For j=1 To objExcel.Sheets.Count-1
objExcel.Sheets(j).Delete
Next
For i=0 To NbreJours
' If IsFerie(DateSerial(Annee, 1, 1+i)) = False Then
objExcel.ActiveWorkbook.Sheets(objExcel.Sheets.Count).Select
objExcel.ActiveWorkbook.Sheets.Add
objExcel.ActiveSheet.Name = Replace(DateSerial(Annee, 1, 1+i),"/","-")
' End If
Next
'ici suppression de Feuil2
objExcel.ActiveWorkbook.Sheets(objExcel.Sheets.Count).Delete
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 13 sept. 2007 à 23:54
Bonsoir PCPT,
For j=objExcel.Sheets.Count to 1 step -1
objExcel.Sheets(j).Delete
Next
erreur: pour supprimer, déplacer les feuilles sélectionnées, insérez d'abord une nouvelle feuille.
J'ai aussi essayé:
if objExcel.Sheets.count > 1 then
cpt = objExcel.Sheets.count
for i =cpt to 2 step -1
objExcel.Sheets(i).delete
next
end if
+ rename de la feuille restante, je me retrouve donc avec ma première feuille datée (02-01-2007),
mais je n'arrive pas à trouver, en vbs, l'équivalent du before/after de vb6.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 14 sept. 2007 à 12:28
Bonjour à tous,
PCPT: une recherche sur "vbs excel remove" ne m'a rien apporté d'intéressant;
JM247L: je n'arrive pas à trouver une méthode fiable (et sa synthaxe) pour supprimer, lors de la création de
mon classur, les feuilles existantes, puis de créer de nouvelles feuilles (dans l'ordre 02-01-2007
à 31-12-2007).
Merci de votre attention.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 14 sept. 2007 à 16:45
Re,
Merci PCPT pour :
For j= objExcel.Sheets.Count to 1 step -1
MsgBox "j=" & j &vbcrlf& objExcel.Sheets(j).Name
'objExcel.Sheets(j).Delete
Next
Et oui, je ne savais pas que l'on peut lire un tableau à partir de la fin.
Merci [auteurdetail.aspx?ID=1017721 JM247L]
pour la suggestion du rename des feuilles.
J'avais essayé, mais il y a rajout de plusieurs.
Je reste finalement sur :
'suppression de Feuil2 et Feuil3
if objExcel.Sheets.count > 1 then
cpt = objExcel.Sheets.count
for i=cpt to 2 step -1
objExcel.Sheets(i).delete
next
end if
For j=0 To NbreJours
If IsFerie(DateSerial(Annee, 1, 1+j)) = False Then
objExcel.ActiveWorkbook.Sheets(objExcel.Sheets.Count).Select
objExcel.ActiveWorkbook.Sheets.Add
objExcel.ActiveSheet.Name = Replace(DateSerial(Annee, 1, 1+j),"/","-")
End If
Next
'suppression de Feuil1
objExcel.ActiveWorkbook.Sheets(objExcel.Sheets.Count).Delete
For j=0 To NbreJours
If IsFerie(DateSerial(Annee, 1, 1+j)) = False Then
if sheet = 1 Then
Set objSheet = objExcel.ActiveWorkbook.Worksheets(sheet)
objSheet.Name = Replace(DateSerial(Annee, 1, 1+j),"/","-")
Else
intCount = objExcel.Sheets.Count
objExcel.ActiveWorkbook.Sheets.Add,objExcel.sheets(intCount)
Set objSheet = objExcel.ActiveWorkbook.Worksheets(sheet)
objSheet.Name = Replace(DateSerial(Annee, 1, 1+j),"/","-")
End If
Sheet = Sheet + 1
End If
Next
objExcel.ActiveWorkbook.Sheets(1).Select
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 14 sept. 2007 à 21:27
Re,
Avant de quitter Excel, ne pas oublier le reset de SheetsInNewWorkbook.objExcel.ActiveWorkbook.Close
objExcel.SheetsInNewWorkbook = 3 'Paramètre par defaut
objExcel.Application.Quit