XL 2021 VBA comment utiliser "contient" ?

Attila451

XLDnaute Occasionnel
Bonjour,
J'ai une instruction dans une macro qui va supprimer le fichier téléchargé nommé Export_SUIVI_CD.xls pour qu'au prochain téléchargement, il garde le même nom et ne devienne pas Export_SUIVI_CD (2).xls, Export_SUIVI_CD (3).xls, Export_SUIVI_CD (4).xls, etc...
J'utilise
Kill ("C:\Users\" & util & "\Downloads\Export_SUIVI_CDE.xls")

Je ne sais pas pour quelle raison (notre informatique étant en congé), le téléchargement des fichiers au lieu d'être Export_SUIVI_CDE.xls devient Export_SUIVI_CDE - 2023-12-26T111948.483.xls et le nom change.

Je cherche donc à supprimer le fichier téléchargé qui commencerait par Export_SUIVI_CDE - 2023-12-26T111948.483.xls mais je ne sais pas comment le traduire.
J'ai essayé des combinaisons du style : Kill ("C:\Users\" & util & "\Downloads\"*"Export_SUIVI_CDE"*".xls" mais ça ne fonctionne pas.

Merci d'avance pour votre précieuse aide !
 
Solution
re
Bonjour
ben c'est simple
tu fait un dir dessus pour avoir le nom complet avec une partie du nom recherché
VB:
Dim chemin$,partfichier$,fichier$
chemin ="C:\Users\" & util & "\"'ne pas oublier ce slach a la fin
partfichier="Export_SUIVI_CDE"
fichier=dir (chemin & partfichier &"*.*")
if fichier<>"" then kill chemin & fichier
voila ;)

oguruma

XLDnaute Occasionnel
Bonjour et si tu passes par powerquery qui peut te ramener le ou les derniers fichiers à date soit les plus récents que tu récupères dans un tableau et ensuite tu lis ce tableau qui contient les fichiers à traiter...
en gros dans ta requête tu tries les fichiers de ton dossier par date décroissante tu ne conserves que le 1er de la liste exemple ListeFichiers{0}[FILENAME] - ListeFichier étant la dernière étape de ta reqiuête pwq dans laquelle tu viens d'effectuer le tri par ordre décroissant et le l'instruction te renvoies ListeFichiers{0][FILENAME].
{0} indique que c'est le 1er enregistrement à récupérer, [FILENAME] nom de la colonne et ainsi sachant que tu veux récupérer le fichier le plus à jour (ce que je présume) tu moqueras éperdument de son nom car à chaque fois tu prendras le 1er de la liste et adieu les Dir... machinchouette bricolés :)
 

patricktoulon

XLDnaute Barbatruc
Bonjour
@oguruma je ne vois pas l'intérêt de passer par PQ LisreFichier et machinchouette comme tu dis
sachant que de toute facon le but est de supprimer ce dit fichier et d'enregistrer l'intance actuelle ce que PQ ne fait pas et ne peut pas faire donc VBA reste indispensable pour faire la chose
PQ c'est bien mais on devrait le limiter a de la BDD
 

patricktoulon

XLDnaute Barbatruc
Bonjour, merci beaucoup pour vos réponses.

En reprenant également l'exemple de patrickToulon => toulonaiiiiis, alleeeez, alleeeeez, alleeeeez !!!! ;)

J'ai également celle ci qui fonctionne:

Sub SuprFichier()

Dim chemin$, partfichier$, fichier$
chemin = "C:\Users\ami\Downloads\" 'ne pas oublier ce slach a la fin
partfichier = "export_DOSSIER_COLIS ("
fichier = Dir(chemin & partfichier & "*.*")
While fichier <> ""
Kill chemin & fichier
fichier = Dir(chemin & partfichier & "*.*")
Wend

End Sub
Bonjour @Attila451
oui en effet si tu en a plusieurs
 

patricktoulon

XLDnaute Barbatruc
Bonjour @Dranreb
nomFic=dir(.....)
'blablabla
'et plus loin
kill nomfic

1° je suis certain(même sur d'ailleurs) que ca ne peut fonctionner car dir renvoie le nom du fichier pas le chemin complet
tu peux m'expliquer pourquoi tu fait un chdrive et chdir dans une gestion d'erreur ?
un simple dir(chemindossier,vbdirectory) ne te suffit pas ?
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Option Explicit
Sub Test()
    Dim Chemin As String, NomFic As String, x$
    Const Masque = "Export_SUIVI_CDE"
    Chemin = "C:\Users\" & Application.UserName & "\Downloads"
  
    x = Dir(Chemin, vbDirectory + vbNormal + vbSystem + vbHidden)'toutes les conditions de dossier
    If x = "" Then MsgBox "Impossible d'accéder à """ & Chemin, vbCritical: Exit Sub
  
    NomFic = Dir(Chemin & "\" & Masque & "*.xls*")
    If NomFic = "" Then MsgBox "Il n'existe aucun de fichier de la forme """ & Masque & """" & vbLf & "Dans """ & Chemin & """.", vbCritical: Exit Sub
  
    Do While NomFic <> ""
        If MsgBox("Supprimer """ & NomFic & """ Dans" & vbLf & Chemin & " ?", vbInformation + vbYesNo) = vbYes Then
            Kill Chemin & "\" & NomFic
        End If
        NomFic = Dir
    Loop
End Sub
Arès un msgbox pour chaque suppression c'est un peu toomuch à mon avis
si il a 20 fichier😂
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
1° je suis certain(même sur d'ailleurs) que ca ne peut fonctionner car dir renvoie le nom du fichier pas le chemin complet
J'avais dit le nom complet du fichier pas son chemin complet.
C'est pourquoi j'avais précisé, dans ma 1ère courte réponse "que vous pourrez spécifier au Kill, concaténé au chemin."
Sinon ça peut aussi fonctionner sans l'y concaténer, ni au Dir ni au Kill, à condition de le définir préalablement comme dossier courant (CurDir) par ChDrive et ChDir ou l'api SetCurrentDirectory, pour les chemins de réseaux.
 
Dernière édition:

Discussions similaires

Réponses
22
Affichages
1 K