Mise a jour de liens.

  • Initiateur de la discussion Initiateur de la discussion Hermes
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

H

Hermes

Guest
Bonjour;

J'ai besoin dans le cadre d'une étude de mettre a jour des liens reliés à un fichier protégé par un mot de passe (worbook).

Est-il possible de créer une macro qui me permette de mettre à jour les liens sans avoir a taper le mot de passe a chaque fois ?
Sachant que même si je connais le mot de passe, je le garde pour des raisons de confidentialité.

J'avais tenté de créer par moi même une telle macro mais j'ai malheureusement échoué. 😛

Merci par avance pour votre aide.
Hermes
 
Re : Mise a jour de liens.

Bonjour,

Je suppose que ton mot de passe protège l'ouverture de ton fichier dans lequel tu veux faire tes mises à jour ?

Si c'est le cas il te suffit (en VBA) de préciser ce mot de passe dans la commande de déprotection de ce fichier

ActiveWorkbook.Unprotect (mot de passe)

Tout ceci à condition que j'ai bien compris ta question

A+
 
Re : Mise a jour de liens.

Bonjour Jacques,

Merci beaucoup pour ta réponse.
En effet; c'est bien l'ouverture du fichier qui est protégé.
J'avais en effet développé une macro dans ce style, mais elle ne fonctionnait pas. J'y utilisais cette commande : unprotect / protect.

Voici mon essai de macro qui s'est hélas relevé infructueux:
Peux tu me dire si en ton sens elle semble correct?
**
Sub update link
Dim vLinkSources
Dim iLinkSource As Integer
Dim AnySheet As Worksheet
sPath = "S:\mon fichier\"
sName = Dir(sPath & "*.xls", vbDirectory)
Do While sName <> ""
Set bk = Workbooks.Open(sPath & sName)
For Each AnySheet In ActiveWorkbook.Worksheets
ActiveWorkbook.Worksheets(AnySheet.Names) _
.Unprotect (mon mot de passe)
Next
vLinkSources = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(vLinkSources) Then
For iLinkSource = LBound(vLinkSources) To UBound(vLinkSources)
ActiveWorkbook.UpdateLink _
vLinkSources(iLinkSource), xlExcelLinks
Next
End If
For Each AnySheet In ActiveWorkbook.Worksheets
ActiveWorkbook.Worksheets(AnySheet.Names) _
.Protect (mon mot de passe)
Next
bk.Close Savechanges:=True
sName = Dir()
Loop
End Sub
**

Le fichier continuait de me demander un mot de passe a l'ouverture malgré l'activation de la macro.
Quelle erreur ais-je pu commettre?

Merci 😉
 
Re : Mise a jour de liens.

Bonjour,

En effet il y a 2 erreurs dans ton code :

Code:
For Each AnySheet In ActiveWorkbook.Worksheets
[COLOR=navy]ActiveWorkbook.Worksheets(AnySheet.Names) _
.Unprotect (mon mot de passe)
[/COLOR]Next
vLinkSources = ActiveWorkbook.LinkSources(xlExcelLinks)
If Not IsEmpty(vLinkSources) Then
For iLinkSource = LBound(vLinkSources) To UBound(vLinkSources)
ActiveWorkbook.UpdateLink _
vLinkSources(iLinkSource), xlExcelLinks
Next
End If
For Each AnySheet In ActiveWorkbook.Worksheets
[COLOR=navy]ActiveWorkbook.Worksheets(AnySheet.Names) _
.Protect (mon mot de passe)
[/COLOR]Next

en effet les métodes "Protect" et "unprotect" s'aplliquent à un objet, en l'occurence dans ton cas à une feuille vu que par l'intermédiaire d'une boucle tu passes en revue toutes les feuilles de ton classeur. Ces feuilles tu les appelles succesivement AnySheet, il te faut donc remplacer les deux lignes (en bleu) par

Code:
AnySheet.Unprotect(mon_mot_de_passe)

et

Code:
AnySheet.Protect(mon_mot_de_passe)

en espérant avoir été assez clair

Bon courage
 
Re : Mise a jour de liens.

Bonjour,

J'ai en effet modifié la macro, merci beaucoup pour cette astuce.
Cependant sur 5 fichiers, il y en a un qui me demande le mot de passe, et lorsque je le rentre j'ai l'erreur suivante :

Run time error 1004 : Method 'updatelink'of object'_Worbook'failed.😕

La ligne suivante est surlignée. et là je vois pas bien ce qu'il veut me dire.
Mes cellules sont liés par un ='S:\mon fichier\[file HFM.xls]23000'!$D$103 etc..
Le code Vlinksources doit donc logiquement mettre a jour tous les liens du Workbook, Worksheets comprises; non ?

Code:
ActiveWorkbook.UpdateLink _
          vLinkSources(iLinkSource), xlExcelLinks

Merci.
 
Re : Mise a jour de liens.

Re,

Je t'avoue que les liaisons sous VBA, ce n'est pas ma tasse de thé
Toutefois, une idée peut être farfelue, si tu omets tout pramètre toutes les liaisons devaient s'effectuer

essaie donc avec :

ActiveWorkbook.UpdateLink

uniquement

Mais je ne promets rien

Au plaisir, d'ailleurs tiens moi au courant car la réponse à ton problème m'intéresse
 
Re : Mise a jour de liens.

Bonsoir,

Et bien j'ai essayer de modifier la macro avec "ActiveWorkbook.UpdateLink " mais j'ai le même problème.

En fait, la macro est assignée à un bouton sur la page de garde (summary) qui reprend des informations sur d'autres feuilles qui elles sont connectées au fichier protégés.

Est ce que celà peut interférer dans le bon fonctionnement de la macro ?

Merci beaucoup pour ton aide Jacques. 🙂
 
Re : Mise a jour de liens.

Bonjour,

J'ai essayé de revoir le problème de la macro ci dessous.
je suis l'exemple donné par l'aide VBA sur le code Linksources.

Code:
aLinks = ActiveWorkbook.LinkSources(xlOLELinks)
If Not IsEmpty(aLinks) Then
    For i = 1 To UBound(aLinks)
        MsgBox "Link " & i & ":" & Chr(13) & aLinks(i)
    Next i
End If

cependant, la macro ne veut rien répondre.
La ligne ci-dessous est toujours surligné malgré les changements et modifications de la macro.😕
Code:
     ActiveWorkbook.UpdateLink _
          vLinkSources(iLinkSource), xlExcelLinks

Quelqu'un aurait une piste pour résoudre ce petit désagrément.

Merci par avance.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
172
Retour