Supprimer fichier
Résolu/Fermé
Pierre1310
Messages postés
8564
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
-
24 juin 2016 à 10:45
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017 - 28 janv. 2017 à 18:15
Scoubi7 Messages postés 88 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 22 février 2017 - 28 janv. 2017 à 18:15
A voir également:
- Supprimer un fichier vba
- Fichier rar - Guide
- Impossible de supprimer un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
12 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié par cs_Le Pivert le 24/06/2016 à 18:18
Modifié par cs_Le Pivert le 24/06/2016 à 18:18
Bonjour,
Curieuse demande!
Je l'ai quand même fait.
voici un dossier où se trouve un fichier vbs pour supprimer le classeur
Pour adapter au nom du classeur, clic droit sur le fichier vbs: Ouvrir avec le Bloc note
ensuite 2 classeurs pour en garder un pour avoir le code!
Ouvrir le classeur Essai allez dans ThisWorbook et activer les 2 lignes en commentaire. A partir de ce moment a la fermeture votre classeur est supprimé.
Bonne programmation
http://www.cjoint.com/c/FFyqsxc7FaQ
@+ Le Pivert
Curieuse demande!
Je l'ai quand même fait.
voici un dossier où se trouve un fichier vbs pour supprimer le classeur
Pour adapter au nom du classeur, clic droit sur le fichier vbs: Ouvrir avec le Bloc note
ensuite 2 classeurs pour en garder un pour avoir le code!
Ouvrir le classeur Essai allez dans ThisWorbook et activer les 2 lignes en commentaire. A partir de ce moment a la fermeture votre classeur est supprimé.
Bonne programmation
http://www.cjoint.com/c/FFyqsxc7FaQ
@+ Le Pivert
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
Modifié par Scoubi7 le 24/12/2016 à 02:03
Modifié par Scoubi7 le 24/12/2016 à 02:03
Bonsoir,
j'ai également besoin de cette fonction (pour supprimer le fichier, pas uniquement une feuille), mais le fichier joint n'est plus dispo... pouvez-vous le réactiver ?
Autrement, je pensais créer une macro "Sub Workbook_BeforeClose()" dans le classeur 2 via le classeur 1, dans laquelle il serait demandé de supprimer le classeur 1 à la fermeture du classeur 2... Mais j'ai suivi plein de tuto pour créer une macro dans un autre classeur et je n'ai rien réussi à faire fonctionner...
Autrement n°2, peut-on enregistrer un fichier *.xls en *.xlsx sans que le fichier *.xls subsiste ?
j'ai également besoin de cette fonction (pour supprimer le fichier, pas uniquement une feuille), mais le fichier joint n'est plus dispo... pouvez-vous le réactiver ?
Autrement, je pensais créer une macro "Sub Workbook_BeforeClose()" dans le classeur 2 via le classeur 1, dans laquelle il serait demandé de supprimer le classeur 1 à la fermeture du classeur 2... Mais j'ai suivi plein de tuto pour créer une macro dans un autre classeur et je n'ai rien réussi à faire fonctionner...
Autrement n°2, peut-on enregistrer un fichier *.xls en *.xlsx sans que le fichier *.xls subsiste ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
24 déc. 2016 à 07:52
24 déc. 2016 à 07:52
Bonjour,
voici le lien, suivre les instructions données dans le post 1:
http://www.cjoint.com/c/FLygZarsQDQ
voici le lien, suivre les instructions données dans le post 1:
http://www.cjoint.com/c/FLygZarsQDQ
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
24 déc. 2016 à 22:55
24 déc. 2016 à 22:55
Merci cs_Le Pivert
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
Modifié par Scoubi7 le 24/12/2016 à 23:41
Modifié par Scoubi7 le 24/12/2016 à 23:41
cs_Le Pivert, j'ai apprécié ton attitude qui a été d'apporter une réponse à Pierre1310 et à moi-même sans tergiverser sur le pourquoi
Cela fait très longtemps que je cherche cette réponse, j'ai posté sur de multiples forums et à chaque fois, plutôt que de répondre à ma question, les différents intervenants me font perdre mon temps, car je dois me justifier sans relâche car selon eux je n'en ai pas besoin et il n'en voit pas l'utilité.
Merci encore pour cette attitude
Toutefois, la solution que tu as apporté à Pierre1310, ne me correspond pas, si tu le veux bien j'aimerai t'exposer mon problème :
J'ai créé différents fichiers excel et je souhaiterai que lorsqu'un fichier n'est pas présent sur mon disque dur, une macro (contenue dans chaque classeur) vérifie si ce fichier est présent sur le DD.
Auquel cas, elle supprime les mises en forme conditionnelles, les shapes et les macros (en sauvegardant en *.xlsx).
C'est là qu'intervient ton fichier : il faudrait qu'une fois la sauvegarde en *.xlsx faite, le fichier original en *.xls qui lance la macro soit effacé.
As-tu une solution à mon problème ? (avec la solution de pierre, il faudrait que chaque classeur possède son fichier *.vbs)
----- EDIT -----
Autant pour moi : je n'avais pas vu que je n'étais pas obliger de nommer le fichier explicitement...
Je fais mes essais et te tiens au courant
Cela fait très longtemps que je cherche cette réponse, j'ai posté sur de multiples forums et à chaque fois, plutôt que de répondre à ma question, les différents intervenants me font perdre mon temps, car je dois me justifier sans relâche car selon eux je n'en ai pas besoin et il n'en voit pas l'utilité.
Merci encore pour cette attitude
Toutefois, la solution que tu as apporté à Pierre1310, ne me correspond pas, si tu le veux bien j'aimerai t'exposer mon problème :
J'ai créé différents fichiers excel et je souhaiterai que lorsqu'un fichier n'est pas présent sur mon disque dur, une macro (contenue dans chaque classeur) vérifie si ce fichier est présent sur le DD.
Auquel cas, elle supprime les mises en forme conditionnelles, les shapes et les macros (en sauvegardant en *.xlsx).
C'est là qu'intervient ton fichier : il faudrait qu'une fois la sauvegarde en *.xlsx faite, le fichier original en *.xls qui lance la macro soit effacé.
As-tu une solution à mon problème ? (avec la solution de pierre, il faudrait que chaque classeur possède son fichier *.vbs)
----- EDIT -----
Autant pour moi : je n'avais pas vu que je n'étais pas obliger de nommer le fichier explicitement...
Je fais mes essais et te tiens au courant
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
25 déc. 2016 à 19:33
25 déc. 2016 à 19:33
En fait, ce qui m'embête dans cette méthode c'est que le fichier *.vbs doit être présent sur le DD et dans mon cas, je souhaiterais que quand on lance mon classeur sur un autre ordi (donc où le *.vbs n'est pas présent), les macros s'effacent et le fichier original soit supprimé.
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
25 déc. 2016 à 21:39
25 déc. 2016 à 21:39
Donc j'ai deux possibilités :
Soit je crée via la macro un *.vbs à chaque fois
Soit je crée une macro dans le 2° classeur via la macro du 1° classeur, où je demande à sa fermeture d'effacer le 1°classeur -> mais aucune des méthode que j'ai trouvé n'a fonctionné...
Soit je crée via la macro un *.vbs à chaque fois
Soit je crée une macro dans le 2° classeur via la macro du 1° classeur, où je demande à sa fermeture d'effacer le 1°classeur -> mais aucune des méthode que j'ai trouvé n'a fonctionné...
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
Modifié par Scoubi7 le 25/12/2016 à 22:50
Modifié par Scoubi7 le 25/12/2016 à 22:50
Je viens de trouver sur un site pourquoi cela ne marche pas depuis le début : il fallait que je coche "Accès approuvé au modèle d’objet du projet VBA" dans les options de sécurité...
Mais donc mon problème est toujours le même, si cette option n'est pas cocher sur l"autre" ordinateur ma macro ne fonctionnera pas...
Peut-être, puis-je en début de mon classeur vérifier si cette fonction est activé et auquel cas fermer le classeur... mais comment faire pour faire une telle vérif ?
Mais donc mon problème est toujours le même, si cette option n'est pas cocher sur l"autre" ordinateur ma macro ne fonctionnera pas...
Peut-être, puis-je en début de mon classeur vérifier si cette fonction est activé et auquel cas fermer le classeur... mais comment faire pour faire une telle vérif ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
26 déc. 2016 à 08:07
26 déc. 2016 à 08:07
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
Modifié par Scoubi7 le 26/12/2016 à 00:33
Modifié par Scoubi7 le 26/12/2016 à 00:33
Encore un nouveau problème...
J'ai bien créer mon 2° classeur avec une macro "ThisWorkbook\Workbook_BeforeClose" qui est censé effacé le 1° classeur à sa fermeture
Mais malheureusement, il faut que je ré-ouvre le 2°classeur puis le referme pour que cela fonctionne...
----- EDIT -----
J'ai résolu mon problème en rajoutant dans le 1° Classeur
" Application.DisplayAlerts = True
Application.EnableEvents = True
ThisWorkbook.Close savechanges:=False"
J'ai bien créer mon 2° classeur avec une macro "ThisWorkbook\Workbook_BeforeClose" qui est censé effacé le 1° classeur à sa fermeture
Mais malheureusement, il faut que je ré-ouvre le 2°classeur puis le referme pour que cela fonctionne...
----- EDIT -----
J'ai résolu mon problème en rajoutant dans le 1° Classeur
" Application.DisplayAlerts = True
Application.EnableEvents = True
ThisWorkbook.Close savechanges:=False"
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
26 déc. 2016 à 08:30
26 déc. 2016 à 08:30
voici un code qui crée un fichier vbs avec son contenu:
a toi de l'adapter, tu remarqueras que lorsqu'il y a des cotes dans le code original, j'ai mis des doubles cotes dans le code d'écriture
Option Explicit Const ForReading = 1, ForWriting = 2 Private Sub CommandButton1_Click() Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile("C:\Users\Daniel\Documents\Deletefile.vbs", ForWriting, True) 'adapter le chemin f.write ("On Error Resume Next") & vbCrLf f.write ("Set fso = WScript.CreateObject(""Scripting.FileSystemObject"")") & vbCrLf f.write ("Dim path") & vbCrLf f.write ("path = WScript.ScriptFullName") & vbCrLf f.write ("GetPath = Left(path, InStrRev(path, ""\""))") & vbCrLf f.write ("Dim nomfichier: nomfichier = ""Essai.xls"" ") & vbCrLf f.write ("Dim lieufichier: lieufichier = GetPath & nomfichier") & vbCrLf f.write ("If fso.FileExists(lieufichier) Then") & vbCrLf f.write (" fso.deletefile lieufichier") & vbCrLf f.write ("WScript.echo "" [OK] Le fichier à été supprimé!"" ") & vbCrLf f.write ("Else") & vbCrLf f.write ("WScript.echo "" [ ] Le fichier n'existe pas!"" ") & vbCrLf f.write ("End If") & vbCrLf f.write ("Set fso = Nothing") & vbCrLf f.write ("WScript.Quit") End Sub
a toi de l'adapter, tu remarqueras que lorsqu'il y a des cotes dans le code original, j'ai mis des doubles cotes dans le code d'écriture
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
26 déc. 2016 à 09:30
26 déc. 2016 à 09:30
Voilà le code opérationnel, a mettre dans ThisWorkbook:
Option Explicit Const ForReading = 1, ForWriting = 2 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Application.ThisWorkbook.Saved = True ' a activer Application.DisplayAlerts = False Dim oWsh creer_vbs Set oWsh = CreateObject("Shell.Application") 'oWsh.ShellExecute Workbooks(ActiveWorkbook.Name).Path & "\delete_file.vbs"' a activer Set oWsh = Nothing End Sub Private Sub creer_vbs() Dim fso, f Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.OpenTextFile(Workbooks(ActiveWorkbook.Name).Path & "\delete_file.vbs", ForWriting, True) f.write ("On Error Resume Next") & vbCrLf f.write ("Set fso = WScript.CreateObject(""Scripting.FileSystemObject"")") & vbCrLf f.write ("Dim path") & vbCrLf f.write ("path = WScript.ScriptFullName") & vbCrLf f.write ("GetPath = Left(path, InStrRev(path, ""\""))") & vbCrLf f.write ("Dim nomfichier: nomfichier = ""Essai.xls"" ") & vbCrLf 'adapter nom classeur f.write ("Dim lieufichier: lieufichier = GetPath & nomfichier") & vbCrLf f.write ("If fso.FileExists(lieufichier) Then") & vbCrLf f.write (" fso.deletefile lieufichier") & vbCrLf f.write ("WScript.echo "" [OK] Le fichier à été supprimé!"" ") & vbCrLf f.write ("Else") & vbCrLf f.write ("WScript.echo "" [ ] Le fichier n'existe pas!"" ") & vbCrLf f.write ("End If") & vbCrLf f.write ("Set fso = Nothing") & vbCrLf f.write ("WScript.Quit") End Sub Private Sub Workbook_Open() Dim msg As String Dim bln As Boolean 'Teste l'éditeur VBA On Error GoTo ErrorHandler bln = Application.VBE.MainWindow.Visible On Error GoTo 0 Exit Sub ErrorHandler: 'Routine de gestion d'erreur. '------------ 'Évalue le numéro d'erreur. Select Case Err.Description Case "L'accès par programme au projet Visual Basic n'est pas fiable" & vbLf msg = "Erreur " & Err.Number & " : " & Err.Description & vbCr & vbCr msg = msg & "Pour autoriser l'accès au projet Visual Basic : " & vbCr msg = msg & "- Menu « Outils » puis « Options... » ;" & vbCr msg = msg & "- Onglet « Sécurité » puis « Sécurité des macros... » ;" & vbCr msg = msg & "- Onglet « Éditeurs approuvés » ;" & vbCr msg = msg & "- Cocher la case « Faire confiance au projet Visual Basic » ;" & vbCr msg = msg & "- Valider ce choix par Ok (2 fois)." & vbCr & vbCr msg = msg & "- Fermer Excel et réouvrir " & ThisWorkbook.Name 'Il semble qu'une faille de sécurité autorise l'accès au projet lorsque le 'débogueur est lancé ou lorsque ce Handler est exécuté alors que l'option '« Faire confiance au projet Visual Basic » n'est pas cochée !!! 'Pour éviter toute ambiguité il est préférable de cocher cette option MsgBox msg, vbCritical Resume Next Case Else MsgBox Err.Description, vbCritical Stop End 'Resume Next End Select End Sub
Scoubi7
Messages postés
88
Date d'inscription
vendredi 16 janvier 2004
Statut
Membre
Dernière intervention
22 février 2017
1
28 janv. 2017 à 18:15
28 janv. 2017 à 18:15
Désolé cs_Le Pivert pour ma réponse tardive, je n'avais pas vu la notification...
Merci beaucoup pour ton aide !
Merci beaucoup pour ton aide !
24 juin 2016 à 18:42
25 juin 2016 à 06:47
Bien que je n'en vois pas la raison, car a quoi sert d'ouvrir un classeur que l'on veut supprimer?
Le fichier vbs supprime le classeur. Pour le démontrer, il suffit de cliquer dessus.
Dans le cas de votre demande je lance le fichier vbs à la fermeture du classeur;
Il n'y a pas de second classeur. Il suffit de mettre le code dans votre classeur et de changer le nom et l'extension dans le fichier vbs par le nom et l'extension de votre classeur. Votre classeur doit être dans le même dossier que le fichier vbs.
Voilà c'est comme cela que ça fonctionne, sinon je n'ai pas compris la question.
@+ Le Pivert
Modifié par cs_Le Pivert le 25/06/2016 à 08:32
Si c'est ça voici le code à mettre dans l'evenement Private Sub Workbook_BeforeClose(Cancel As Boolean) de ThisWorkbook
@+