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
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