[Non résolu] lien vers un fichier excel stocké sur internet

Laosurlamontagne

XLDnaute Occasionnel
Bonjour/bonsoir à tous,

J'ai une question unique je crois qui n'a jamais été posée (enfin, je pense...).

J'ai un tableur excel qui récupère des données d'un tas de fichier excel dans tout un tas de dossier. Après moult galère et un fort support de cette communauté (merci ! merci! merci!), j'ai une macro qui travaille au poil et qui me récupère les données sans soucis sous la forme:

Code:
='C:\Mesdocs\Sources\dossierA\[fichier_Bidule.xlsm]Data'!E20

Le "truc" maintenant, c'est que je dois "partager" mon travail avec tout un tas de gens et que les fichiers sources sont maintenant localisés sur un site internet:

Code:
http://lesite.com/Sources/DossierA

Évidemment, dans mon tableur excel, si je remplace l'adresse "c:\...\dossierA" par "http://lesite.com/Sources/dossierA", ça ne fonctionne pas...

Auriez-vous une idée?
 
Dernière édition:

Joe[PT]

XLDnaute Junior
Re : [Non résolu]

Bonsoir Laosurlamontagne,

Si tu souhaites récupérer un fichier dans un répertoire, qu'il soit sur internet ou ton PC, il faut quant même mettre un \ à la fin de ton chemin... Juste une idée de recherche... sinon tu ne lis pas au bon endroit !

Code:
"http://lesite.com/Sources/dossierA/

Juste une idée, pas sûr que ce soit ça !

Bonne soirée,

Joe
 

Victor21

XLDnaute Barbatruc
Re : [Non résolu]

Bonjour, Lao.

Les termes choisis pour les titres que nous donnons à nos discussions ont l'avantage de renvoyer, en bas de page, vers des sujets similaires. Avez-vous regardé en bas de page ?
Ou à défaut, le Lien supprimé ?
 

Laosurlamontagne

XLDnaute Occasionnel
Re : [Non résolu]

Bonjour à tous,

Merci pour vos différentes réponses. Cette "partie" de VBA m'étant totalement abstrait, je vais essayer d'absorber les différentes réponses pour trouver une solution.

@Victor21: oui, c'est généralement mon premier réflexe. Dans mon cas de ma problématique, cela n'a pas été satisfaisant (mais peut-être que les propositions sont différentes d'un ordinateur à un autre).
 

Laosurlamontagne

XLDnaute Occasionnel
Re : [Non résolu] lien vers un fichier excel stocké sur internet

En complément de mon post ci-dessus. J'ai tenté de "reproduire" en VBA la formulation utilisé par excel lorsqu'on définit un hypertexte, du genre:

Code:
ShFichiers.Hyperlinks.Add Anchor:=ShFichiers.Range("J" & r + 2), Address:=siteweb & "/" & Left(Fichier, Len(Fichier) - 5) & Fichier, TextToDisplay:="Link"

siteweb étant le site en question
Fichier: le nom du fichier avec son extension

(dans mon cas, le nom du répertoire et du fichier sont identiques)

Mais dans le cas d'un hypertexte Excel, je me suis aperçu que tout les caractères spéciaux (espace, virgule, ...) étaient remplacés par "%20". Ma "solution" ci-dessus ne marche donc pas...
 

Laosurlamontagne

XLDnaute Occasionnel
Re : [Non résolu] lien vers un fichier excel stocké sur internet

Le lien de Roland_M me permet de vous soumettre un exemple incluant la macro.

Disons que je souhaite récupérer la valeur de la cellule B2 du fichier 350207d1449216281-courbes-chiots-sur-excel-peseeschiots.xls disponible sur le lien partagé par Roland_M.

Ma macro est la suivante:

Code:
Option Explicit

Private Declare Function QueryPerformanceCounter Lib "Kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency Lib "Kernel32" (X As Currency) As Boolean

Dim NbFichiers As Long, NbDossiers As Long
Dim Dep As Currency, Fin As Currency, Freq As Currency
Dim r As Long
Const TypeFichier As String = "xls"

Private Sub ListeFichiers(sDossier As String)
    DoEvents
    Application.ScreenUpdating = False
    QueryPerformanceCounter Dep

    ' ShFichiers.Cells.Clear
    Range("B3:C200").ClearContents
    r = 0: NbDossiers = 0: NbFichiers = 0

    ListeFichiersDansDossier sDossier, True
    'Tri

    QueryPerformanceCounter Fin: QueryPerformanceFrequency Freq
    With Application
        .StatusBar = "Dossiers : " & NbDossiers & " /  Fichiers : " & NbFichiers & " / " & TypeFichier & " : " & r & " / " & Format(((Fin - Dep) / Freq), "0.00 s")
        .ScreenUpdating = True
    End With
End Sub

Private Sub Tri()
    With ShFichiers
        .Columns("B").Sort Key1:=.Range("B2"), Order1:=xlAscending
    End With
End Sub

'   Late Binding
Private Sub ListeFichiersDansDossier(sChemin As String, InclureSousDossiers As Boolean)
Dim FSO As Object, Dossier As Object, Fichier As String
Dim sPath As String
Dim Formule As String


Set FSO = CreateObject("Scripting.FileSystemObject")
Set Dossier = FSO.GetFolder(sChemin)

' Erreur sur Dossier "System Volume Info"
On Error Resume Next
Fichier = Dir$(sChemin & "\*.xls")
siteweb = "http://www.excel-downloads.com/forum/attachments/forum-excel/"


Do While Len(Fichier) > 0
    NbFichiers = NbFichiers + 1
    
    sPath = "\" & Fichier
    Formule = "='" & Dossier & "\[" & Fichier & "]Feuil1" & "'!" & "B2"

            r = r + 1
            ShFichiers.Range("B" & r + 2).Value = Right(Left(Fichier, Len(Fichier) - 4), 11)
            ShFichiers.Range("C" & r + 2).Formula = Formule
            ShFichiers.Hyperlinks.Add Anchor:=ShFichiers.Range("D" & r + 2), Address:=siteweb & "/" & Left(Fichier, Len(Fichier) - 5) & "/" & Fichier, TextToDisplay:="Link"

        Fichier = Dir$()
        If NbFichiers Mod 100 = 0 Then Application.StatusBar = "Dossiers : " & NbDossiers & " /  Fichiers : " & NbFichiers & " / " & TypeFichier & " : " & r
    Loop

    If InclureSousDossiers Then
        For Each Dossier In Dossier.SubFolders
            NbDossiers = NbDossiers + 1
            ListeFichiersDansDossier Dossier.Path, True
        Next Dossier
    End If

    Set Dossier = Nothing
    Set FSO = Nothing
End Sub

Sub SelDossier()
Dim sChemin As String
Worksheets(1).EnableCalculation = False
    sChemin = ThisWorkbook.Path
    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = sChemin & "\"
        .Title = "Dossier à traiter"
        .AllowMultiSelect = False
        .InitialView = msoFileDialogViewDetails
        .ButtonName = "Sélection Dossier"
        .Show
        If .SelectedItems.Count > 0 Then ListeFichiers .SelectedItems(1)
    End With
Worksheets(1).EnableCalculation = True
End Sub

Celle-ci récupère l'ensemble des fichiers contenu dans un dossier et elle rapporte dans la colonne B le nom du fichier, en C la valeur recherchée, et en colonne C, le lien vers le fichier (dans mon environnement, il y a plein de fichier excel identique dans plein de répertoire).

Cette macro marche super dans le cas d'un répertoire local. Mais quid de cette expression avec un fichier (ou des repertoires distant) ?

Code:
    Formule = "='" & Dossier & "\[" & Fichier & "]Feuil1" & "'!" & "B2"
 

Pièces jointes

  • exemple.xlsm
    19.9 KB · Affichages: 32
  • exemple.xlsm
    19.9 KB · Affichages: 42

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 157
dernier inscrit
youma