VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de confir'

  • Initiateur de la discussion Initiateur de la discussion Volix
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Volix

XLDnaute Nouveau
Bonjour à Tous,

Débutant en VBS, je viens vous demandez de l'aide pour terminer mon script

Le voici :
Code:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:\Users\Internet\Desktop\scriptvbs\testvbs\test1.xls", "C:\Users\Internet\Desktop\scriptvbs\testvbs2\"
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open("C:\Users\Internet\Desktop\scriptvbs\testvbs2\test1.xls")
wbExcel.Worksheets("two").Delete
wbExcel.Close
appExcel.Quit
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
Pour l'instant,
il copie correctement le classeur,
il me demande si je souhaite ouvrir le classeur en lecture-écriture ou non, demande de confirmation pour supprimer la feuille et enfin demande de sauver et quitter (terminer le processus)

Mais ce que je souhaiterais, c'est que le script soit "invisible", donc aucunes boites de dialogue 😕

Je n'arrive pas à intégrer (erreurs) :
Code:
Application.DisplayAlerts = False
Application.DisplayAlerts = True

Le script doit aussi supprimer plusieurs onglet normalement mais je n'arrive pas ajouter plusieurs feuille dans la sélection à supprimer, j'ai pourtant essayer :
Code:
wbExcel.Worksheets("two", "three").Delete
 
wbExcel.Worksheets("two","three").Delete
 
wbExcel.Worksheets("two").Delete
wbExcel.Worksheets("three").Delete


Je vous remercie d'avance pour l'aide que vous pouvez m'apporter
Cordialement,
Volix.

Je tourne sous XP

J'ai effectuer des recherches avant de venir poster ici,
Je suis en Stage (en 1ere Bac Pro SEN) et une de mes tâches consiste donc à faire un script VBS, mais n'ayant jamais toucher au VBS de ma vie, je bloque
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonjour Volix,

Bienvenue sur XLD

Je n'ai pas testé mais des pistes

Pour les messages d'alertes, essaye

Code:
appExcel.DisplayAlerts = False
appExcel.DisplayAlerts = True
avant d'ouvrir le classeur

Pour les feuilles, essaye

Code:
wbExcel.Sheets(Array("two", "three")).Select
appExcel.ActiveWindow.SelectedSheets.Delete
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonjour,

tu dois placer un displayalerts = false en début de macro et = true à la fin et tu peux écrire l'effacement de plusieurs onglets ainsi :
VB:
Sub Truc()
Application.DisplayAlerts = False
' ...
    Sheets(Array("Feuil1", "Feuil2")).Delete
' ...
Application.DisplayAlerts = True
End Sub

[EDIT] : Salut tototiti ^^
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonjour,

modifie peut être ceci :
Code:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:\Users\Internet\Desktop\scriptvbs\testvbs\test1.xls", "C:\Users\Internet\Desktop\scriptvbs\testvbs2\"
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open("C:\Users\Internet\Desktop\scriptvbs\testvbs2\test1.xls", ReadOnly:=False)
Application.DisplayAlerts = False
wbExcel.Worksheets("two").Delete
Application.DisplayAlerts = True
wbExcel.Close False 'pour ne pas enregistrer, True pour enregistrer
appExcel.Quit
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

bonne soirée
@+

Edition : bonsoir Toto, Softmama
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonsoir à tous,

Je vous remercies pour vos réponses très rapides !!

Je test cela demain matin et vous tiens au courant le plus vite possible

Mille merci,
Volix
 
Dernière édition:
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonjour Volix, Bonjour Softmama, Bonjour Pierrot 🙂

Au bout la vraie solution sera surement un "mix" de nos différentes propositions

En effet , les lignes avec DisplayAlerts doivent entourer les parties qui génèrent des messages que tu ne souhaites pas voir comme précisé par Softmama, mais pas avec Application (tu es dans un script VBS, il n'y a pas d'Application par défaut je crois) mais avec appExcel

L'ajout de False après wbExcel.Close t'évitera tout message, comme proposé par Pierrot

Pour la suppression des feuilles je crois que ce que je t'ai proposé devrait fonctionner...

🙂
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonjour à tous,
à peine arriver a mon bureau, j'ai tous de suite commencer des tests grâces à vous !

Les voici :
VB:
Set appExcel = CreateObject("Excel.Application")
appExcel.DisplayAlerts = False
Set wbExcel = appExcel.Workbooks.Open("d:\Documents and Settings\S0029819\Bureau\testvbs2\Parc Trixell.xls")
wbExcel.Sheets(Array("READ ME", "Graph2", "tcd-grah", "180810controlerebut", "modèle_age", "UC supprimée")).Select
appExcel.ActiveWindow.SelectedSheets.Delete
appExcel.DisplayAlerts = True

wbExcel.Close True
appExcel.Quit
Mille merci pour la sélection de plusieurs feuilles !!

Mais ensuite... une fenêtre enregistrer sous, s'ouvre (Aïe !)
J'enregistre, je remplace.
Puis une nouvelle fenêtre pour enregistrer les modification s'ouvre à,
je sélectionne oui, donc nouvelle fenêtre enregistrer sous...
le fichier existe déjà, remplacer ? Oui.
Et la : Impossible d'enregistrer se document, il a été ouvert en lecture seul...


VB:
appExcel.DisplayAlerts = False
Set wbExcel = appExcel.Workbooks.Open("d:\Documents and Settings\S0029819\Bureau\testvbs2\Parc Trixell.xls")
appExcel.DisplayAlerts = True
J'ai aussi mis le False avant d'ouvir le classeur et le true juste après et là j'ai juste le message de confirmation pour les feuilles, mais en final le classeur à toujours toutes ses feuilles 😕


Test suivant :
VB:
Sub Truc()
Application.DisplayAlerts = False
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open("d:\Documents and Settings\S0029819\Bureau\testvbs2\Parc Trixell.xls")
wbExcel.Sheets(Array("READ ME", "Graph2", "tcd-grah", "180810controlerebut", "modèle_age", "UC supprimée")).Delete
Application.DisplayAlerts = True
End Sub
Set wbExcel.Close=True
Set appExcel.Quit
Je ne sais pas si le code de Soft-mama fonctionne car,
j'ai tous de suite des erreurs, problème au niveau de la fermeture, j'ai beaux essayer,
VB:
wbExcel.Close True
wbExcel.Close = True
wbExcel.Close=True
Set wbExcel.Close True
Set wbExcel.Close = True
Set wbExcel.Close=True
Toujours problème(erreurs), soit :
'Objet Requis :'wbExcel' ou Erreur : '=' attendu

Le ReadOnly:=False,
Je n'est pas d'erreur mais j'ai toujours un message pour ouvrir en lecture-seul ou lecture-écriture

Si je rajoute
wbExcel.Close False, mon fichier ne sera pas sauvegarder, c'est bien cela ?

J'espère avoir été le plus claire possible 😱
Je vous remercie d'avance
Cordialement,
Volix


Ps : Pratique le
VB:
 :p
 
Dernière édition:
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Re,
Oui bien sur je l'es essayer,

J'ai l'erreur :
erreurfgf.bmp


VB:
Set wbExcel = appExcel.Workbooks.Open("d:\Documents and Settings\S0029819\Bureau\testvbs2\Parc Trixell.xls", ReadOnly:=False)
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Bonjour Pierrot,

alors avec ce que tu me propose :
VB:
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "I:\Services_TIV\dsi\Documents Affaires\TRIXELL\Parc\Parc Trixell.xls", "d:\Documents and Settings\S0029819\Bureau\testvbs2\"
Set appExcel = CreateObject("Excel.Application")
Set wbExcel = appExcel.Workbooks.Open("d:\Documents and Settings\S0029819\Bureau\testvbs2\Parc Trixell.xls", ReadOnly=True)
Application.DisplayAlerts = False
wbExcel.Sheets(Array("READ ME", "Graph2", "tcd-grah", "180810controlerebut", "modèle_age", "UC supprimée")).Select
appExcel.ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
wbExcel.Close True
appExcel.Quit
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
Il me demande quand même si je veut l'ouvir en lecture seul ou écriture :/
et il y a aussi un problème au niveau de :
VB:
Application.DisplayAlerts = False
wbExcel.Sheets(Array("READ ME", "Graph2", "tcd-grah", "180810controlerebut", "modèle_age", "UC supprimée")).Select
appExcel.ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
Erreur : Objet requis 'Application'

Merci,
bon après-midi
Volix
 
Re : VBS, copie d'un classeur et suppression de plusieurs onglets sans demande de con

Re,

perso, plutôt que faire une copie du fichier, j'ouvre le fichier original en lecture seule et je fais directement un enregistrer sous.... Maintenant jamais trop travaillé directment en vbs... A voir si là n'est pas le problème....
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour