Consolidation plusieurs fichiers - Chemin d'accès

Bonjour,

Je débute en VBA et j'ai quelques difficultés pour terminer ma macro.

Voici en quelques mots ce que je souhaite faire :

J'ai plusieurs fichiers Excel qui sont regroupés à un seul et même endroit (même dossier), qui ont la même architecture (même nombre de colonnes avec intitulés de colonnes identiques, cependant le nombre de lignes varie).

Je souhaiterai consolider dans un seul et même fichier Excel les données de tous les fichiers.

Le problème que je n'arrive pas à solutionner concerne le chemin d'accès car mes fichiers sont regroupés sur un serveur commun.

En effet, j'ai fait un fichier avec une macro (enregistré sur mon bureau) qui vient récupérer l'ensemble des données de plusieurs fichiers d'un dossier également enregistré sur mon bureau. La macro fonctionne. (en pièce jointe le document "Consolidation").

Le code est le suivant :

ChDir "C:\Users\simonf\Desktop\Test macro"

NomClasseur = Dir("C:\Users\simonf\Desktop\Test macro\*.xlsm")

While Len(NomClasseur) > 0

Application.DisplayAlerts = False

Workbooks.Open NomClasseur ' ouverture du classeur

LigneTotal = ActiveSheet.UsedRange.Rows.Count ' je récupère le nombre de lignes de données

Range("A4:AZ100").Copy ' je copie toutes les données de la feuille active

Workbooks("Consolidation.xlsm").Activate ' je reviens sur le classeur de départ

DerLigne = ActiveSheet.UsedRange.Rows.Count ' je recherche la dernière ligne vide de la feuille

Range("A" & DerLigne).Select ' je me positionne sur la dernière ligne vide

ActiveSheet.Paste ' je colle les données

Workbooks(NomClasseur).Close ' fermeture du classeur

NomClasseur = Dir ' je passe au prochain classeur

Wend

Ensuite j'ai essayé de modifier cette macro avec le chemin d'accès vers notre serveur. Et là impossible de trouver le bon code. (en pièce jointe le document "Consolidation_collab").

Voici le code:

Workbooks.Open Filename:= _

"

"

NomClasseur = Workbooks.Open("

")

Je joins également deux exemples de fichiers que je souhaite consolider (BMC et Bergamont).

Si quelqu'un a une solution je suis preneuse.

A dispo pour tout renseignement complémentaire car ce n'est peut être pas clair.

Merci d'avance pour votre aide.

Fanny

68consolidation.xlsm (297.27 Ko)
47bergamont.xlsm (43.26 Ko)
36bmc.xlsm (54.50 Ko)

Bonjour,

Le "FileName" de la méthode Open doit indiquer le chemin complet du fichier à partir d'une unité disponible sur votre PC.

Cette unité peut être un lecteur local (par exemple, C:) ou un lecteur réseau (par exemple X:) qui correspond à un des serveurs de votre entreprise.

"

... Forms/Test" n'est pas un chemin de fichier mais une URL avec laquelle vous pouvez éventuellement télécharger le fichier sur votre PC et le placer dans l'emplacement de votre choix. Une fois cette opération effectuée, vous pouvez ouvir votre fichier à partir de l'emplacement que vous avez choisi.

Le plus simple est tout de même de disposer du lecteur réseau.

Bonjour,

Merci pour votre retour. Je ne trouve pas de lecteur réseau car cela est géré via internet.

Cependant, votre solution me convient, je téléchargerai les fichiers nécessaires sur l'URL pour les copier dans un dossier lorsque j'aurai besoin de lancer la macro.

Cordialement

Bonjour,

Je me permets de revenir sur ce sujet.

J'essaye de télécharger sur une url plusieurs fichiers d'un même dossier.

J'ai écris le code ci-dessous :

Sub telecharger()

Dim strURL As String

strURL = "

"

Workbooks.Open Filename:=strURL

End Sub

mais cela m'ouvre un fichier avec un message d'erreur "Sorry, something went wrong"

Le code focntionne si je lui demande d'ouvrir un dossier précis sur l'url ou si les documents que je souhaite ouvrir se trouvent sur mon PC.

Merci d'avance pour votre aide.

Cordialement

Bonjour,

Vous ne pouvez télécharger qu'un seul fichier à la fois.

ci-dessous exemple de code pour

1- télécharger le fichier et l'enregistrer en local dans "Mes Documents" sous le nom "votre_fichier.xlsm"

2- ouvrir dans votre classeur le fichier enregistré en local

Option Explicit

#If VBA7 Then
    Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As Long
#Else
    Declare Function URLDownloadToFile 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
#End If

Sub Trait_fichier()

    Dim emplacement As String, URL As String, nom_fichier As String
    Dim code_retour As Integer

    '// Assignation URL et emplacement
    URL = "https://collabcenter.amersports.com/int ... st/fichier.xlsm"
    emplacement = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")

    '// Téléchargement fichier
    nom_fichier = emplacement & "\" & "votre_fichier.xlsm"
    code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)
    If code_retour = 0 Then MsgBox "Téléchargement effectué" Else Exit Sub

    '// Ouverture fichier
    Workbooks.Open Filename:=nom_fichier

End Sub

Bonjour,

Merci pour votre retour. J'ai essayé le code mais j'ai un message d'erreur sur " code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)".

Si nous ne pouvons télécharger qu'un seul fichier à la fois, est-il possible de faire une boucle pour les ouvrir jusqu'au dernier ?

Merci

Merci pour votre retour. J'ai essayé le code mais j'ai un message d'erreur sur " code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)".

Quel est le message d'erreur ?

Si nous ne pouvons télécharger qu'un seul fichier à la fois, est-il possible de faire une boucle pour les ouvrir jusqu'au dernier ?

Bien sûr, mais il faudra à chaque itération, préciser le nom du fichier à télécharger.

"Quel est le message d'erreur ?

A mon avis, l'URL doit intégrer nom utilisateur et mot de passe."

=> la ligne est surlignée en jaune

"Si nous ne pouvons télécharger qu'un seul fichier à la fois, est-il possible de faire une boucle pour les ouvrir jusqu'au dernier ?"

le nom du 1er fichier, nombre de fichiers, l'ordre, etc n'est pas connu initialement et peut évoluer.

Est-il possible éventuellement d'avoir une macro qui ouvre le premier fichier du dossier sans que le nom soit spécifié ?

Merci d'avance

Fanny

Est-il possible éventuellement d'avoir une macro qui ouvre le premier fichier du dossier sans que le nom soit spécifié ?

Compliqué avec une URL de type https://.... Le problème serait sans doute différent avec une URL de type ftp://...

[quote=Fannysi

post_id=704838 time=1541770498 user_id=59128]

j'ai un message d'erreur sur " code_retour = URLDownloadToFile(0, URL, nom_fichier, 0, 0)".

[/quote]

A priori, l'accès au fichier est conditionné par une identification (utilisateur + mot de passe) qui n'est pas enregistré sur votre PC.

Si c'est le cas, utiliser alors ce code en renseignant les informations d'indentification :

Sub OpenFileFromURL()

    Dim emplacement As String, URL As String, nom_fichier As String
    Dim WHTTP As Object
    Dim no_fichier As Long

    '// Assignation URL et emplacement
    URL = "https://collabcenter.amersports.com/int ... st/fichier.xlsm"
    emplacement = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")

    '// Téléchargement du fichier
    Set WHTTP = CreateObject("Microsoft.XMLHTTP")
    utilisateur = "": mot_de_passe = ""
    WHTTP.Open "GET", URL, False, utilisateur, mot_de_passe
    WHTTP.Send

    '// Enregistrement du fichier à l'emplacement choisi si téléchargement OK
    If WHTTP.Status = 200 Then
        no_fichier = FreeFile()
        nom_fichier = emplacement & "\" & "votre_fichier.xlsm"
        Open nom_fichier For Binary Access Write As no_fichier
            Put no_fichier, 1, WHTTP.ResponseBody
        Close no_fichier
        Set WHTTP = Nothing
    Else
        MsgBox "Echec téléchargement": Exit Sub
    End If

    '// Ouverture fichier
    Workbooks.Open Filename:=nom_fichier

End Sub

Bonjour,

merci pour le retour.

La manip ne fonctionne pas. J'ai vu avec notre service informatique et celui-ci a mis une sécurité supplémentaire pour les téléchargements sur le site.

Je vais opter pour un copier/coller des fichiers du serveur disponible en url dans un dossier de mon bureau et ensuite lancer la macro.

Cordialement

Rechercher des sujets similaires à "consolidation fichiers chemin acces"