COPIE fichier et chemin d'accès

Bonjour à tous,

demande peut-être un petit peu particulière...

Dans le cadre de mes projets un dossier type regroupant facturation, signalétique, plans, etc.

Ce dossier, je le copie (au moyen d'un fichier batch) quand je démarre un nouveau dossier pour garder la même nomenclature.

Mais j'ai un problème de taille pour les fichiers excel :

1_ DATA.xlsm : regroupe les mots cléfs du projet (client, adresse, chantier,...)

2_ DPU.xlsm : regroupe mes annexes pour une demande de permis. Il reprend des informations qui se trouve dans DATA

Mais lorsque je copie ces fichiers, les liens entre les deux classeurs ne suivent pas. Que puis-je faire ?

Merci d'avance !

Bonjour,

DATA.xlsm et DPU.xlsm > les extensions .xlsm laissent penser que ces fichiers contiennent des macros.

Il est possible, à l'ouverture d'un fichier d'en connaître le chemin ActiveWorkbook.Path

Ensuite, l'on peut corriger l'accès à l'autre fichier via macro ou via une variable dans le code >> si c'est le code qu'il faut corriger.

C'est possible aussi si ce sont des formules qu'il faut corriger.

Un bout de fichier représentatif faciliterait l'explication.

ric

J'ai réduit le problème à sa plus simple expression

Bonjour,

Un essai ...

Dans le module1 du fichier "DPU.xlsm", il y a Sub ModifLiens(). On peut l'exécuter à l'aide CTRL+Q.

Cette macro, corrige les liens contre le nouveau chemin en cours, même s'il est situé sur une autre unité ( K:\ ou M:\ ... etc).

Il y aura à ajuster la plage dans la macro.

Les cellules seront traitées seulement si la formule contient les 2 premiers caractères =' .

La plage peut donc est plus globale. Si trop globale, le temps d'exécution en sera pénalisé.

ric

24dpu.xlsm (18.65 Ko)

Il y a un kwak, que je n'ai pas précisé. Du coup, je rencontre deux problèmes :

1_ L'outil est utilisé dans un sharepoint Microsoft. Du coup, mon lien ressemble plutôt à "='

COPIE FICHIERS/TEST COPIE FICHIERS/DOSSIERS/TEST2/[DATA.xlsm]Feuil1'!$B$3"

Nous sommes plusieurs à travailler sur ces fichiers...

Ce que j'aimerais, c'est que ce lien soit adapté par un lien "relatif" du genre ../TEST2/[DATA.xlsm]Feuil1'....

2_ le fichier BAT modifie les non DATA et DPU avec objet-DATA et objet-DPU (objet étant introduit dans le fichier bat).

Bonjour,

Je n'ai pas accès à une infrastructure "Sharepoint" pour tester.

Je ne crois pas que, pour un chemin de liaison, l'on puisse utiliser " ../ " ou " ..\ ".

Ce que je constate par contre, c'est que si je copie les 2 fichiers en même temps dans un dossier du réseau local, les liens sont mis à jour automatiquement.

Je ne sais pas si ce phénomène sera bon pour un "Sharepoint" ... puisqu'en envoyant des documents sur "Sharepoint", c'est une forme de "publication" ressemblant à une publication sur un site Web.

Dans DPU.xlsm, mets les macros en commentaire ou supprime-les pour effectuer le test sur Sharepoint.

ric

Le gros problème est que la plateforme Sharepoint est prévue pour collaboration, donc "

" sera différent chez chacun de mes associés je pense... car avant de "publier" je préfère trouver une solution pour mon problème en local...

Avant de résoudre le problème Sharepoint, j'aimerais indiquer que votre proposition ne marche par à partir du moment où mon fichier BATCH copie les documents génériques en modifiant leurs nom DATA et DPU.xlsm en projet-DATA et projet-DPU.xlsm

Bonjour,

Bon, je viens d'allumer.

Désolé ...

Je regarde cela.

ric

Bonjour,

Le code n'est pas nécessairement optimisé, mais il a l'avantage de fonctionner.

Spoiler

Private Sub Workbook_Open()

''Private Sub ModifLiens()

Dim Chemin As String

Dim AncChemin As String

Dim Cl As Range

Dim Ac As String

Dim NomFic As String

Dim NewNomFic As String

Dim LaCellule As String

Chemin = ActiveWorkbook.Path

Chemin = "='" & Chemin & "\"

With Worksheets("Feuil1")

Ac = .Range("B2").FormulaLocal

LaCellule = Right(Ac, Len(Ac) - Len(Left(Ac, InStrRev(Ac, "]"))))

AncChemin = Left(Ac, Len(Ac) - Len(LaCellule))

NomFic = ActiveWorkbook.Name

NewNomFic = Chemin & "[" & NomFic & "]" ''& LaCellule

NewNomFic = Replace(NewNomFic, "DPU", "DATA")

For Each Cl In Range("B2:B4")

Cl.FormulaLocal = Replace(Cl.FormulaLocal, AncChemin, NewNomFic)

Next Cl

End With

End Sub

ric

mais... parce qu'il y a toujours un mais ^^

J'ai une arborescence dossiers, avec un dossier 2_DPU... et forcément je coince.

Pour ainsi dire, mon fichier BAT copie tous les fichiers génériques (qui se trouvent dans un dossier unique) pour les répartir dans les sous-dossiers de mon projet ...

Pourquoi faire simple, quand on peut faire compliqué

Et je ne parle pas encore de Sharepoint

J'ai mis le partenaire informatique de mon bureau sur le coup aussi... s'il trouve la solution avant nous, je communiquerai

Si nous y arrivons avant, je reverrai les termes de notre contrat

Bonjour,

Si je comprends ton propos, le remplacement DPU par DATA pose problème à cause du nom d'un dossier ...

Un essai ...

remplace : NewNomFic = Replace(NewNomFic, "DPU", "DATA")

par NewNomFic = Replace(NewNomFic, "DPU]", "DATA]")

Le " ] " qui est dans le nom du fichier ne sera pas dans le nom du dossier.

Si nous y arrivons avant, je reverrai les termes de notre contrat

Mais, s'il y a des menaces de couper le salaire ...

Moi, je ...

ric

J'ai peut-être une piste...

Plutôt que d'avoir un dossier avec tous mes fichiers génériques, je les tries dans leurs sous-dossiers... résultat, je peux ajouter à mon fichier DPU un lien vers le fichier DATA :

..\1_ADMIN\DATA.xlsm

Si, une macro me permet d'adapter seulement ce lien hypertexte (DATA -> projet-DATA), alors peut-être pourrions nous dans les cellules du document DPU faire référence à ce lien hypertexte pour repérer le fichier DATA et récupérer les valeurs des cellules en question ?

Si nous y arrivons avant, je reverrai les termes de notre contrat

Mais, s'il y a des menaces de couper le salaire ...

Moi, je ...

Ca ne peut mal, ils nous tiennent par les

Et on est pas avec un salaire là... on parle de partenaire micro$oft.

J'avais une piste... mais je ne comprends pas vraiment pourquoi elle ne marche pas...

//donner le nom chemin du fichier
B1=CELLULE("nomfichier";A1)

//changer celui-ci pour pointer sur le fichier DATA qui se trouve dans 1_ADMIN
B2=SUBSTITUE(B1;"2_DPU";"1_ADMIN")

//donner le nom du fichier DATA
B3=SUBSTITUE(B2;"DPU";"DATA")

//et enlever le "Feuil1"
B4=GAUCHE(B3;TROUVE("]";B3))

//pointer les cellules ad-hoc
B7="DATA'!$B$3"

//créer le lien...
C7=CONCAT("'";$B$4;B7)

//récupère la donnée
D7=INDIRECT(C7)

En local, il faut que les deux fichier soit ouverts (DATA et DPU)

Et en cloud, ça bug complètement (#REF!) en D7, où normalement je récupère la donnée. Et si je copie manuellement le lien de C7, Excel m'informe qu'il rencontre une erreur dans la formule (hors, en local, pas de soucis... du moment que les fichiers sont ouverts tous les deux, bien sûr).

Rechercher des sujets similaires à "copie fichier chemin acces"