Boucle sur nom de fichier Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
S
Sidwel
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 9 décembre 2014
Version d'Excel : 2010

Message par Sidwel » 9 juillet 2019, 14:10

Bonjour à tous,

Je travaille sur un programme access me permettant de télécharger un fichier excel xlsx enregistré sur internet (adresse http).

Le code de l'import fonctionne, mais j'ai rentré pour cela le nom du fichier en dur dans mon code: 2019_H01_TEST.xlsx
Or, il y a un nouveau fichier chaque semaine, et je souhaiterais donc faire une boucle sur le nom du fichier en fonction de la semaine en cours. Et donc chaque semaine le fichier de la semaine en cours s'enregistre en gardant son nom, à la suite des autres..

Exemple:
- on est en S28 de 2019 donc je veux télécharger le fichier 2019_H28_TEST
- on est en S28 de 2018 donc je veux télécharger le fichier 2018_H28_TEST
etc...

Un avis ? :) merci, à plus tard
Option Compare Database

Private Declare Function TelechargerFichierURL Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long

Private Const ERROR_SUCCESS As Long = 0

Private Const BINDF_GETNEWESTVERSION As Long = &H10

-------------------------------
Public Function TelechargerFichierInternet(SourceUrl As String, FichierLocal As String) As Boolean

TelechargerFichierInternet = TelechargerFichierURL(0&, SourceUrl, FichierLocal, BINDF_GETNEWESTVERSION, 0&) = ERROR_SUCCESS

End Function

-----------------------------------
Sub ExempleTelechargementInternet()

On Error GoTo ExempleErreur

Dim fichier_internet As String
Dim fichier_local As String

fichier_internet = "http://.../filename:2019_H01_TEST.xlsx/archives:0" ' 
fichier_local = "C:\Users\...\IMPORTS\TEST.xlsx" ' 

Call TelechargerFichierInternet(fichier_internet, fichier_local)

MsgBox "Le téléchargement a réussi..."
Exit Sub

ExempleErreur:
MsgBox "Une erreur s'est produite..."

End Sub
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'479
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 9 juillet 2019, 14:25

bonjour,

une proposition
Sub ExempleTelechargementInternet()

On Error GoTo ExempleErreur

Dim fichier_internet As String
Dim fichier_local As String

nf = Format(Date, "yyyy") & "_H" & Format(Application.WorksheetFunction.WeekNum(Date), "00") & "_TEST.xlsx"
fichier_internet = "http://.../filename:" & nf & "/archives:0" '
fichier_local = "C:\Users\...\IMPORTS\" & nf '

Call TelechargerFichierInternet(fichier_internet, fichier_local)

MsgBox "Le téléchargement a réussi..."
Exit Sub

ExempleErreur:
MsgBox "Une erreur s'est produite..."

End Sub
S
Sidwel
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 9 décembre 2014
Version d'Excel : 2010

Message par Sidwel » 9 juillet 2019, 14:50

Bonjour h2so4

Je crois qu'il ne prend pas "worksheetFunction".. cf image en pj

est-ce lié au fait que je travaille dans ACCESS et non EXCEL peut être?

merci
erreur1.PNG
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'479
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 9 juillet 2019, 15:31

bonjour,

j'avais zappé le fait que tu étais en access. Tu dois donc trouver l'équivalent de cette fonction en access

essaie ceci
nf = Format(Date, "yyyy") & "_H" & Format(Date, "ww") & "_TEST.xlsx"
S
Sidwel
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 9 décembre 2014
Version d'Excel : 2010

Message par Sidwel » 9 juillet 2019, 15:46

oui c'est lié, mais le fichier n'est pas téléchargé ni enregistré..bisarre

il semble que le nf n'est pas reconnu dans l'adresse http

NOK: nf dans l'adresse http
Sub ExempleTelechargementInternet()

On Error GoTo ExempleErreur

Dim fichier_internet As String
Dim fichier_local As String

nf = Format(Date, "yyyy") & "_H" & Format(Date, "ww") & "_TEST.xlsx"

fichier_internet = "http://.../filename:" & nf & "/archives:0"
fichier_local = "C:\Users\...\TEST\" & nf

Call TelechargerFichierInternet(fichier_internet, fichier_local)

MsgBox "Le téléchargement a réussi..."
Exit Sub

ExempleErreur:
MsgBox "Une erreur s'est produite..."

End Sub
OK: adresse http en dur
Sub ExempleTelechargementInternet()

On Error GoTo ExempleErreur

Dim fichier_internet As String
Dim fichier_local As String

nf = Format(Date, "yyyy") & "_H" & Format(Date, "ww") & "_TEST.xlsx"

fichier_internet = "http://.../filename:2019_H24_TEST.xlsx/archives:0"
fichier_local = "C:\Users\...\TEST\" & nf

Call TelechargerFichierInternet(fichier_internet, fichier_local)

MsgBox "Le téléchargement a réussi..."
Exit Sub

ExempleErreur:
MsgBox "Une erreur s'est produite..."

End Sub
S
Sidwel
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 9 décembre 2014
Version d'Excel : 2010

Message par Sidwel » 9 juillet 2019, 17:38

est-ce que quelqu'un a une idée pour finir la journée en beauté? :)

Ma variable nf n'est pas reconnue dans l'appel du fichier sur internet..
nf = Format(Date, "yyyy") & "_H" & Format(Date, "ww") & "_TEST.xlsx"
fichier_internet = "http://.../filename:" & nf & "/archives:0"
alors que ça fonctionne avec ce code en dur:
fichier_internet = "http://.../filename:2019_H27_TEST.xlsx/archives:0"
Bonne soirée !
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'479
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 9 juillet 2019, 17:40

bonjour

verifie le nom de fichier internet avec ce code
Sub ExempleTelechargementInternet()

On Error GoTo ExempleErreur

Dim fichier_internet As String
Dim fichier_local As String

nf = Format(Date, "yyyy") & "_H" & Format(Date, "ww") & "_TEST.xlsx"

fichier_internet = "http://.../filename:" & nf & "/archives:0"
fichier_local = "C:\Users\...\TEST\" & nf

msgbox fichier_internet
Call TelechargerFichierInternet(fichier_internet, fichier_local)

MsgBox "Le téléchargement a réussi..."
Exit Sub

ExempleErreur:
MsgBox "Une erreur s'est produite..."

End Sub
S
Sidwel
Membre habitué
Membre habitué
Messages : 66
Inscrit le : 9 décembre 2014
Version d'Excel : 2010

Message par Sidwel » 9 juillet 2019, 18:26

yes bien vu h2so4! c'est tout bon maintenant j'ai rectifié! merci !

par sécurité il faudrait que je vérifier au préalable si le fameux fichier que je cherche existe en fait.

J'ai trouvé ce bout de code pour une fonction sur excel mais savez-vous l'équivalent sur ACCESS ?
Public Function FichierExiste(fichier_internet As String)

   If Len(Dir(fichier_internet)) > 0 Then
      FichierExiste = True
   Else
      FichierExiste = False
   End If
End Function
Mais il ne réagit pas et passe direct à "une erreur s'est produite"
Sub ExempleTelechargementInternet()

On Error GoTo ExempleErreur

Dim fichier_internet As String
Dim fichier_local As String

nf = Format(Date, "yyyy") & "_H" & Format(Date, "ww") & "_TEST.xlsx"

fichier_internet = "http://.../filename:" & nf & "/archives:0"

Call FichierExiste(fichier_internet)

fichier_local = "C:\Users\TEST\" & nf

MsgBox fichier_internet

Call TelechargerFichierInternet(fichier_internet, fichier_local)

MsgBox "Le téléchargement a réussi..."
Exit Sub

ExempleErreur:
MsgBox "Une erreur s'est produite..."

End Sub
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'479
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 9 juillet 2019, 18:33

bonjour,

cette fonction ne permet pas de vérifier l'existence d'un fichier sur internet.
Public Function FichierExiste(fichier_internet As String)

   If Len(Dir(fichier_internet)) > 0 Then
      FichierExiste = True
   Else
      FichierExiste = False
   End If
End Function
il faudrait vérifier sur ce site s'il n'existerait pas une url qui te permettrait de vérifier si le fichier existe ou pas et interpréter la réponse.

tu peux aussi adapter le message d'erreur.
ExempleErreur:
MsgBox "Une erreur s'est produite..., vérifier si le fichier existe"
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message