Bonjour par le menu edition/liaisons/
on peut modifier la source d'un fichier en liaison...
comment ecrire une macro afin de repointer toutes les liaisons vers une nouvelle source...
Merci
Bonjour par le menu edition/liaisons/
on peut modifier la source d'un fichier en liaison...
comment ecrire une macro afin de repointer toutes les liaisons vers une nouvelle source...
Merci
Bonjour,
En utilisant l'enregistreur de macro tu as ce code
Il te reste a adapter a ton besoin
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ActiveWorkbook.ChangeLink Name:="H:\Fichiers Excel\AncienFichier.xls", NewName _ :="H:\Fichiers Excel\NouveauFichier.xls", Type:=xlExcelLinks
merci j'avais fait le test aussi,
seulement,
il faudrait que je recupere dans une cellule le chemin d nouveau fichier a pointer (c'est faisable..) et ensuite l'integrer par un code dans le Newname..
c'est encore faisable....
le souci est le name....
pour que ce soit pris en compte il faut que les chemin soit different...
et si j'integre un newname similaire au name...
ca marche plus....
Et si tu fais le changement de lien uniquement si tes deux fichiers sont Différent???
Ce que je marque dessous est juste une idée aproximative :
Sinon si tu veux plus d'aide, met un fichier ou redonne un exemple plus concret !!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Dim MonLien1, MonNewLien As String MonLien1 = "C:\Test\Fichier.xls" MonNewLien = MonLien1 'Les deux variables sont identique donc l'ajout ne doit pas se faire If MonLien1 <> MonNewLien Then 'Si Mon lien 1 diférent de MonNewLien Alors Faire le changement de lien End If
alors l'idée est super claire,
j'ai un probleme quant à la mise en forme...
je recupere par macro le chemin dans la cellule A1 de mon feuillet Accueil
j'ai ensuite entré ton code...
ecrit comme cela
en fait j'ai pas d'erreur, mais rien ne se passe, tu arrives a voir pourquoi ..?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Macro1() Dim MonLien1, MonNewLien As String MonLien1 = "" & Sheets("ACCUEIL").Range("a1").Value & "" MonNewLien = MonLien1 If MonLien1 <> MonNewLien Then ActiveWorkbook.ChangeLink Name:=MonLien1, NewName:= _ MonNewLien, Type:=xlExcelLinks End If End Sub
si à la ligne :à la ligne d'après (surtout avec une variable locale), si on a
Code : Sélectionner tout - Visualiser dans une fenêtre à part MonNewLien = MonLien1que se passe-t-il ? RIEN car les valeurs sont id... Iden... Identiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If MonLien1 <> MonNewLien Then
la ligne n'est pas bien placée :et la déclaration de variable ne me plait pas beaucoup mais je ne connais pas le code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part MonNewLien = MonLien1
ESVBA
Attention mon code n'était qu'un simple éxemple purement bidon...
Il faut que tu précise quel sont les liens à utiliser...
MonLien1 c'est un lien que tu recupères dans la cellule A1 c'est ça?
Maintenant tu veux faire quoi avec le contenu de cette cellule ???
Tu veux remplacer un lien (que tu connais) par celui que tu as récuperé???
Mais comment determine tu l'autre lien???
Voila mon code pour mettre a jour mes liaison,
mon probleme est que je dois mal ecrire l'expression avec mes variables..
voilà mon code
dans les cellules des variable je recupere par une macro le chemin de l'adresse du fichier...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub Maj() Dim ancienlien As String Dim newlien As String ancienlien = Range("a23").Value newlien = Range("a22").Value If Range("a23") = "" Then Range("a22").Copy Range("a23") ElseIf ancienlien <> newlien Then ActiveWorkbook.ChangeLink ancienlien, newlien, xlLinkTypeExcelLinks Else Exit Sub End If End Sub
donc en l'entrant dans le code du changelink, il devrait etre pris en compte..
et ben non, j'ai un debogage sur cette ligne...
Merci si vous avez une idée.
Cdt
Ton probleme provient peut etre des valeurs des liens et non du code
A22 => H:\Fichiers Excel\Liaison Nouveau.xlsx
A23 => H:\Fichiers Excel\Liaison Ancien.xlsx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Sub Maj() Dim ancienlien As String Dim newlien As String ancienlien = Range("a23").Value newlien = Range("a22").Value If Range("a23") = "" Then Range("a22").Copy Range("a23") Else if ancienlien <> newlien Then ActiveWorkbook.ChangeLink ancienlien, newlien, xlLinkTypeExcelLinks end if End if End Sub
la valeur
a22
et a23
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING OFFICE.xls
les liens et les fichiers existent pourtant...
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING SALLE.xls
je vois pas... c'est curieux??
et quand je lance une macro en enregistrement,
et que je fais mais liaisons voila le code que j'ai
ou bien le contraire.. pour les fichiers, je jongle entre les 2.. pour le moment...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ActiveWorkbook.ChangeLink Name:= _ "C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING OFFICE.xls" _ , NewName:= _ "C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING SALLE.xls" _ , Type:=xlExcelLinks
peut être faut il que je recupere les " dans le code.. car mes variables, n'ont que la valeur... mais je ne peux pas mettre les variables entre guillement "" car elles ne sont pas prise en compte, il faudrait peut etre ajouter avant des" et à la fin... dans une autre cellule...non?
Il est possible que le problème soit les espaces dans le chemin comme "DECEMBRE 09"
Dans ce cas, ajoute des crochets
ou comme ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part C:\[Documents and Settings]\Administrateur\Bureau\[DECEMBRE 09]\PLANNING SALLE.xls
Je n'ai pas testé, a toi de nous dire
Code : Sélectionner tout - Visualiser dans une fenêtre à part [C:\Documents and Settings\Administrateur\Bureau\DECEMBRE 09\PLANNING SALLE.xls]
ca y est le probleme etait mon ecriture des valeur reprises pour le nom des mise ajour
et moi j'ecricais
Code : Sélectionner tout - Visualiser dans une fenêtre à part ancienlien = "" & Range("a23").Value & ""
pour ceux que ca interesse, voila mon code...
Code : Sélectionner tout - Visualiser dans une fenêtre à part ancienlien = Range("a23").Value
merci a vous tous !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Sub DETAILCHEMIN() Dim ancienlien As String Dim newlien As String Dim fichier As FileDialog Set fichier = Application.FileDialog(msoFileDialogFilePicker) fichier.Show MsgBox fichier.SelectedItems(1) Range("a22").Select ActiveCell.FormulaR1C1 = fichier.SelectedItems(1) ancienlien = "" & Range("a23").Value & "" newlien = "" & Range("a22").Value & "" If Range("a23") = "" Then Range("a22").Copy Range("a23") 'MsgBox ("Veuillez a nouveau selectioner votre planning pour terminer les chargements") ElseIf ancienlien <> newlien Then ActiveWorkbook.ChangeLink ancienlien, newlien, xlLinkTypeExcelLinks Else Exit Sub End If Range("a22").Copy Range("a23") End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager