Mise à jour automatique d'un chemin "Sous répertoire"

Amilo

XLDnaute Accro
Bonjour le forum,

Dans un fichier "X" en cellule F4 j'ai la liaison vers un autre fichier dont le chemin se rémuse comme suivant :

- 'C:\Répertoire A\Sous répertoire B\[Nom du fichier source.xls]Feuil1'!B11

Toujours dans mon fichier "X" en cellule K4 j'ai une formule :

=GAUCHE(CELLULE("filename");CHERCHE("[";CELLULE("filename");1)-2)

Celle-ci me donne le chemin : 'C:\Répertoire A\Sous répertoire B\

Le "Sous répertoire B" est variable car il est dupliqué et renommé tous les mois.

Existe-t-il une formule pour modifier automatiquement la variable "Sous répertoir B" de la cellule F4 en fonction de la cellule K4 ???


Merci d'avance pour votre soutien

Bon dimanche à tous
 

gfortin9

XLDnaute Occasionnel
Re : Mise à jour automatique d'un chemin "Sous répertoire"

Allô!

En fichier joint, une solution qui fonctionne, car elle a été testée.

Par contre, il faut absolument que "Nom du fichier source.xls" soit ouvert lui aussi.

Sinon, la commande indirect renvoie #ref

Si cela ne convient pas, une personne, plus habile que moi, trouvera peut-être autre chose.

GFortin
 

Pièces jointes

  • Classeur2.xls
    25.5 KB · Affichages: 89
  • Classeur2.xls
    25.5 KB · Affichages: 85
  • Classeur2.xls
    25.5 KB · Affichages: 78

Amilo

XLDnaute Accro
Re : Mise à jour automatique d'un chemin "Sous répertoire"

Allô!

En fichier joint, une solution qui fonctionne, car elle a été testée.

Par contre, il faut absolument que "Nom du fichier source.xls" soit ouvert lui aussi.

Sinon, la commande indirect renvoie #ref

Si cela ne convient pas, une personne, plus habile que moi, trouvera peut-être autre chose.

GFortin

Bonsoir gfortin9

Je viens de tester votre prosposition et vous remercie pour votre aide sur ce sujet à priori, pas facile à résoudre.

Voici mes remarques : elle résoud le principal problème dans la mise à jour automatique des liens mais comme vous l'avez annoncé, il y a une condition, c'est que le fichier source doit étre ouvert également, sinon la cellule renvoie #REF!.

Peut-on détourner cette condition ??? Quelqu'un aurait-t-il une piste ??

Merci d'avance, bon dimanche à tous
 

PMO2

XLDnaute Accro
Re : Mise à jour automatique d'un chemin "Sous répertoire"

Bonjour,

J'ai fait une fonction personnalisée qui ne me plaît pas trop car elle l'air de consommer beaucoup de ressources.
Si vous ne l'utilisez qu'en F4 cela devrait quand même aller.

Code à copier dans un module standard
Code:
Function Liaison_pmo(Nom_Fichier_Source As String, _
  Nom_Feuille_Source As String, Adresse_Cellule_Source As String) As Variant
On Error GoTo Erreur
If LCase(Right(Nom_Fichier_Source, 4)) <> ".xls" Then
  Nom_Fichier_Source = Nom_Fichier_Source & ".xls"
End If
Dim APP As Excel.Application
Dim WB As Workbook
Dim S As Worksheet
Dim R As Range
Set APP = CreateObject("Excel.Application")
Set WB = APP.Workbooks.Open(ActiveWorkbook.Path & "\" & Nom_Fichier_Source)
Set S = WB.Sheets(Nom_Feuille_Source)
Set R = S.Range(Adresse_Cellule_Source)
Liaison_pmo = R
Erreur:
On Error Resume Next
Set R = Nothing
Set S = Nothing
If Not WB Is Nothing Then WB.Close False
Set WB = Nothing
If Not APP Is Nothing Then APP.Quit
Set APP = Nothing
End Function

Cette fonction a 3 paramètres (tous des String)

Dans la cellule de votre choix (F4 dans votre exemple) tapez la formule suivante
=Liaison_pmo("zaza";"Feuil1";"b11")
où "zaza" est le nom du classeur source
"Feuil1" est le nom de la feuille source
"b11" est la cellule source dont la valeur sera le résultat de la fonction.
Tous les arguments doivent être mis entre double quotes.

Faites un test avec un nouveau classeur.
Le classeur qui contient la fonction ET le classeur source doivent être dans le même répertoire.

Cordialement.

PMO
Patrick Morange
 

Amilo

XLDnaute Accro
Re : Mise à jour automatique d'un chemin "Sous répertoire"

Bonjour,

J'ai fait une fonction personnalisée qui ne me plaît pas trop car elle l'air de consommer beaucoup de ressources.
Si vous ne l'utilisez qu'en F4 cela devrait quand même aller.

Code à copier dans un module standard
Code:
Function Liaison_pmo(Nom_Fichier_Source As String, _
  Nom_Feuille_Source As String, Adresse_Cellule_Source As String) As Variant
On Error GoTo Erreur
If LCase(Right(Nom_Fichier_Source, 4)) <> ".xls" Then
  Nom_Fichier_Source = Nom_Fichier_Source & ".xls"
End If
Dim APP As Excel.Application
Dim WB As Workbook
Dim S As Worksheet
Dim R As Range
Set APP = CreateObject("Excel.Application")
Set WB = APP.Workbooks.Open(ActiveWorkbook.Path & "\" & Nom_Fichier_Source)
Set S = WB.Sheets(Nom_Feuille_Source)
Set R = S.Range(Adresse_Cellule_Source)
Liaison_pmo = R
Erreur:
On Error Resume Next
Set R = Nothing
Set S = Nothing
If Not WB Is Nothing Then WB.Close False
Set WB = Nothing
If Not APP Is Nothing Then APP.Quit
Set APP = Nothing
End Function

Cette fonction a 3 paramètres (tous des String)

Dans la cellule de votre choix (F4 dans votre exemple) tapez la formule suivante
=Liaison_pmo("zaza";"Feuil1";"b11")
où "zaza" est le nom du classeur source
"Feuil1" est le nom de la feuille source
"b11" est la cellule source dont la valeur sera le résultat de la fonction.
Tous les arguments doivent être mis entre double quotes.

Faites un test avec un nouveau classeur.
Le classeur qui contient la fonction ET le classeur source doivent être dans le même répertoire.

Cordialement.

PMO
Patrick Morange


Bonsoir PMO, Bonsoir le Forum,

Merci pour votre code je testerai sur mon fichier pour voir le résultat tout en tentant de le comprendre. Malheureusement, en réalité je devrai appliquer la formule sur plusieurs cellules en F4 + jusqu-à 10 cellules plus bas.

Je verrai ce que ça donne au niveau vitesse de traitement !!

Merci encore pour votre soutien

Bonne soirée à tous
 

Discussions similaires

Réponses
2
Affichages
1 K

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander