Liens entre fichiers

Bonjour à tous

et merci pour le temps que l'un ou l'autre d'entre vous pourra consacrer à mon pb

J'ai chché ds le forum et n'ai pas trouvé solution

Je veux chargé un fichier (cible.xlsm) à partir d'un autre fichier qui a la même structure (source.xslx) sans ouvrir le fichier source

J'utilise un bout de code trouvé sur le net et qui marchait très bien jusqu'à présent, mais là ... plus rien à faire

Si j'utilise la commande "Application.DisplayAlerts = False" (ligne 34 du code) alors mon résultat dans mon fichier cible devient "#REF#, et si je ne l'utilise pas, Excel me demande i) le fichier source, ii) la feuille à utiliser (ce n'est plus le cas ici car j'ai simplifié le workbook pour l'occasion). Normalement, mon code prend déjà cet ensemble d'information. La ligne "ActiveWorkbook.UpdateLinks = xlUpdateLinksNever" ne semble rien changer non plus

4source.xlsx (16.78 Ko)
5cible.xlsm (304.41 Ko)

Avez-vous une idée pour n'avoir qu'à choisir le nom du fichier source ?

Merci bcp, en espérant avoir été clair (suffisamment)

Jeb

Option Explicit

Sub clk_Load()
    ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
'Pick file
    Dim fDialog As FileDialog
    Dim myFile As String

    Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
    With fDialog
        .AllowMultiSelect = False
        .Title = "Select a file"
        .InitialFileName = ThisWorkbook.Path
        With .Filters
            .Clear
            .Add "Excel files", "*.xlsx"
            .Add "All files", "*.*"
        End With
    End With
    If fDialog.Show = -1 Then
        myFile = fDialog.SelectedItems(1)
    End If
'use a file object to retrieve information
    Dim fs As FileSystemObject
    Set fs = New FileSystemObject
    Dim CheminSource As String
    CheminSource = fs.GetAbsolutePathName(myFile)
    Dim FichierSource As String
    FichierSource = fs.GetFileName(myFile)
    Dim Formule As String
'check version
'Perform the same process by block
    Formule = "='" & CheminSource & "[" & FichierSource & "]Parameters'!B3:B9"
'    Application.DisplayAlerts = False
    With shInit.Range("B3:B9")
      .Value = Formule
      .Value = .Value
    End With
End Sub

Bonjour,

Le souci se situe au niveau de la variable CheminSource ... cette variable contient aussi le nom du fichier, ce qui pose problème dans la formule.

J'ai ajouté une ligne pour corriger ...

 ...
 ...
'use a file object to retrieve information
    Dim fs As FileSystemObject
    Set fs = New FileSystemObject
    Dim CheminSource As String
    CheminSource = fs.GetAbsolutePathName(myFile)
    Dim FichierSource As String
    FichierSource = fs.GetFileName(myFile)
    CheminSource = Left(CheminSource, Len(CheminSource) - Len(FichierSource))  ' << ligne ajoutée pour en extraire que le chemin sans le nom du fichier
    Dim Formule As String
'check version
...
...

ric

Salut Ric

merci bcp pour ta réponse.

On peut améliorer, car on peut récupérer directement le path du fichier avec les objets filesystemobject

CheminSource = fs.GetParentFolderName(myFile)

J'avais du faire une erreur quand j'ai codé, et je ne m'en étais pas aperçu. Ton retour m'a permis de le corriger.

Bien amicalement

Bonjour,

Ce que j'aime de mes réponses pourries, c'est que plusieurs personnes comprennent la problématique de leur souci et corrige leur code adéquatement.

C'est plus intéressant que du tout cuit ...

ric

Rechercher des sujets similaires à "liens entre fichiers"