Supprimer un fichier dont le nom contient le texte d'une cellule

Bonjour

J'ai un fichier excel qui me permet de générer une fiche de saisi après sélection d'un agriculteur A et d'une variété de maïs Z.

J'ai créé une macro qui me permet d'enregistrer ce fichier avec le nom suivant "initial_2022_A_Z" à partir d'une formule en cellule M1. Ca fonctionne.

J'ai créé ensuite une 2e macro qui me permet d'enregistrer ce même fichier sous un autre nom "2022_A_Z_OK" à partir d'une formule en cellule N1. Ca fonctionne.

Je souhaite enfin créé une 3e macro qui supprimera le premier fichier enregistré sous "initial_2022_A_Z" à partir du texte inscrit en cellule M1. J'ai essayé avec le code suivant mais ça bug au niveau de la ligne Set f = fs.Getfile(sNomFichier). Pouvez-vous m'aider ?

Sub SupprimerFichier()

Range("M1").Select

    Dim sNomFichier As String
    sNomFichier = "\\VSECHANGE\Echange\Semences\00. SEMAGR\00_Process\20. Semences de base\A2022\Transfert_agriculteurs_SB\" & Range("M1")

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(sNomFichier)
    f.Delete

 End Sub

Bonjour Lambda67

Vous nous dites

à partir d'une formule en cellule N1

Et je vois

Range("M1")

Il y a comme qui dirait une différence

Bonjour BrunoM45

La cellule M1 sert pour donner le nom du 1er fichier "initial_2022_A_Z"
La cellule N1 sert pour donner le nom du 2e fichier "2022_A_Z_OK"

Je souhaite réutiliser la cellule M1 justement pour pouvoir que la macro trouve le 1er fichier "initial_2022_A_Z" pour le supprimer. La cellule N1 ne sert donc plus dans ce cas.

Re,

Normalement pas besoin d'utiliser N1

Voici le code détaillé et optimisé

Sub SupprimerFichier()
  Dim sPath As String, sFic As String
  ' Chemin d'accès au fichier
  sPath = "\\VSECHANGE\Echange\Semences\00. SEMAGR\00_Process\20. Semences de base\A2022\Transfert_agriculteurs_SB\"
  ' Nom du fichier initial
  sFic = Range("M1")
  ' Vérifier si le fichier Ok existe
  If Dir(sPath & sFic & "_OK*") <> "" Then
    Kill sPath & sFic
  End If
 End Sub

A+

MErci pour votre réponse.

Vous avez inscrit "_OK*", ca veut donc dire que cela va supprimer les fichiers avec "_OK" dedans ?

 If Dir(sPath & sFic & "_OK*") <> "" Then
    Kill sPath & sFic

Ce n'est pas ce que je veux. Je souhaite que les fichiers nommer avec ma cellule M1 soit supprimer car lorsque je vais changer d'agriculteur et de variété, chaque fichier aura un nom différent, "initial_2022_A_Z", "initial_2022_B_Z", "initial_2022_B_X", etc ... C'est tout l'intérêt d'utiliser la cellule M1 qui m'aide à générer un nom différent à chaque changement d'agriculteur.

Je ne souhaite pas non plus supprimer les fichiers qui contiennent le texte "initial" dans leur nom, car l'objectif est de faire une suppression au fur est à mesure.

Bonsoir,

Navré que vous ne sachiez pas lire le VBA

Faites un test et vous verrez

Bonjour

N'y voyez pas de mauvaise volonté de ma part, c'est effectivement que j'ai du mal à déchiffrer le VBA désolé.
J'ai copié le code que vous aviez écrit mais le fichier ne se supprime pas :/

Re,

Je ne peux que vous conseiller d'acheter le livre "VBA pour les nuls", très bien fait

Essayez en ajoutant la ligne "Debug.Print"

Sub SupprimerFichier()
  Dim sPath As String, sFic As String
  ' Chemin d'accès au fichier
  sPath = "\\VSECHANGE\Echange\Semences\00. SEMAGR\00_Process\20. Semences de base\A2022\Transfert_agriculteurs_SB\"
  ' Nom du fichier initial
  sFic = Range("M1")
  ' Afficher le nom dans la fenêtre d'exécution
  Debug.Print sFic
  ' Vérifier si le fichier Ok existe
  If Dir(sPath & sFic & "_OK*") <> "" Then
    Kill sPath & sFic
  End If
 End Sub

Cela devrait vous afficher la valeur de sFic qu'il faudra nous donner

A+

Bonjour

La commande ne marche pas désolé ... j'envisage sérieusement d'acheter le VBA pour les Nuls ^^. Puis-je vous transmettre le fichier en privé pour un test de votre côté ?

Bonjour Lambda67

Est-ce que votre fenêtre d'exécution est affichée (CTRL+G)

Sinon rien en privé désolé, vous pouvez anonymiser votre fichier avec cet outil

A+

Ma fenêtre d'exécution ?
Je suis un peu perdu ... je vous transmet le fichier

Re,

La fenêtre d'exécution, c'est

image

Donc, le debug.print nous sort : initial_2022_TRS_SB_BINDER JACKY_KWS OTTO

Si nous faisons

debug.Print sPath & sFic & "initial_*"

Cela nous donne

\\VSECHANGE\Echange\Semences\00. SEMAGR\00_Process\20. Semences de base\A2022\Transfert_agriculteurs_SB\initial_2022_TRS_SB_BINDER JACKY_KWS OTTOinitial_*

Est-ce que l'accès et le fichier ont bien ce nom... je ne crois pas

A+

La destination est bonne, mais le nom du fichier est : initial_2022_TRS_SB_BINDER JACKY_KWS OTTO

J'avais modifié un morceau du code que je n'ai pas remplacé par le votre, c'est pour ça que le nom était bizarre

J'ai compris mon erreur, merci à vous.
J'ai modifié la dénomination dans la ligne debug, et le nom du fichier qui apparait dans la fenêtre d'exécution et identique à celui dans le dossier de destination, mais la commande de suppression ne s'effectue pas.

Sub SupprimerFichier()
  Dim sPath As String, sFic As String
  ' Chemin d'accès au fichier
  sPath = "\\VSECHANGE\Echange\Semences\00. SEMAGR\00_Process\20. Semences de base\A2022\Transfert_agriculteurs_SB\"
  ' Nom du fichier initial
  sFic = Range("M1")
  ' Afficher le nom dans la fenêtre d'exécution
  Debug.Print sFic
  ' Vérifier si le fichier initial existe
  If Dir(sPath & sFic & "_initial") <> "" Then
    Kill sPath & sFic
  End If
 End Sub

Avez vous une idée ? Sinon tant pis, je laisserai tombé.

A moins que vous ayez un code d'enregistrer le fichier *_initial en *_Ok tout en supprimant directement le fichier *_initial

Je relance le topic, si une âme charitable peut m'aider ^^

Bonjour Lambda67

J'ai l'impression qu'on tourne en rond

Si cette ligne ne fonctionne pas

Dir(sPath & sFic & "_initial")

Alors supprimé ce qu'il y a à la fin

Dir(sPath & sFic)

Même si on ne comprend pas le VBA, est-ce compliqué de réfléchir 2 minutes

Pour une suppression il faut que la valeur de retour soit différente de vide

A+

Bonjour Bruno

J'ai trouvé une ligne de code beaucoup plus simple en utilisant Kill

Sub SupprimerFichier()
Kill "J:\Semences\00. SEMAGR\00_Process\20. Semences de base\A2022\30. Transfert_agriculteurs_SB\" & Range("M1").Value
End Sub

Ca marche parfaitement.

Je vous remercie pour votre patience et votre aide, j'ai compris qu'il est préférable d'apprendre à pécher plutôt que l'on me donne un poisson. Cependant, même si l'envie d'apprendre est là, si le temps manque la concentration n'est pas la même. Et déchiffrer du VBA n'a rien à voir avec apprendre à pécher, sauf s'il faut d'abord apprendre à comprendre le langage du pêcheur qui essaie de te l'expliquer

Rechercher des sujets similaires à "supprimer fichier nom contient texte"