Bonjour,
J'ai une petite question pour les professionnels du VBA que vous etes.
J'ai plusieurs fichiers que j'utilise dans le cadre de mon travail (Fichier source), tous proteges par 2 mots de passes (en niveau workbooks) (save as --> General option pass) qui sont identiques entre les fichiers.
J'ai un autre fichier censes recuperes les datas de ces premiers fichiers (fichier cible).
Les cellules appellent a des resultats linkes sur ces premiers.
Helas, si les liens fonctionnent, je suis a chaque fois obliges d'entrer les mots de passes (le premier en fait) pour updater ce fichier (6 fois le meme pass), ce qui est un peu genant.
Je me suis aventure a creer une macro qui me permettrait d'updater les links sans avoir a taper le mot de passe a chaque fois.
Voici mon essai :
------
Sub BScriteriacopy()
Dim vLinkSources
Dim iLinkSource As Integer
Dim AnySheet As Worksheet
sPath = "S:\Europe\...\"
sName = Dir(sPath & "*.xls")
Do While sName <> ""
Set bk = Workbooks.Open(sPath & sName)
For Each AnySheet In ActiveWorkbook.Worksheets
ActiveWorkbook.Worksheets(AnySheet.Names) _
.Unprotect Password:="Password"
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 Password:="Password"
Next
bk.Close Savechanges:=True
sName = Dir()
Loop
End Sub
----
Le tout relie sur une barre du Toolbox pour le lancer en individuel.
J'ai de meme desactive les updates automatiques a cause de la demande des mots de passes.
A ceci j'ai 2 difficultes auquel je requiers votre aide:
1. La macro ne semble vouloir updater que mon premier fichier dans le repertoire concernee et ne prends pas en compte les autres fichiers.
2. le systeme me demande quand meme le password, et ensuite bug avec une error "Type mismatch" avec en highlight jaune
ActiveWorkbook.Worksheets(AnySheet.Names) _ .Unprotect Password:="Password"
Si je ne tapes pas le password, il s'arrete sur
Set bk = Workbooks.Open(sPath & sName)
*****Questions
Comment faire pour que la macro aille updater tous les liens, delocker le password Workbook ( les worksheets ne sont pas proteges ) et le relocker apres update des infos ?
Merci par avance pour ce probleme un peu complexe :O).
Je vous prie de m'excuser aussi pour l'absence d'accent, mais je travaille sur clavier d'Europe Central.
Merci beaucoup.
J'ai une petite question pour les professionnels du VBA que vous etes.
J'ai plusieurs fichiers que j'utilise dans le cadre de mon travail (Fichier source), tous proteges par 2 mots de passes (en niveau workbooks) (save as --> General option pass) qui sont identiques entre les fichiers.
J'ai un autre fichier censes recuperes les datas de ces premiers fichiers (fichier cible).
Les cellules appellent a des resultats linkes sur ces premiers.
Helas, si les liens fonctionnent, je suis a chaque fois obliges d'entrer les mots de passes (le premier en fait) pour updater ce fichier (6 fois le meme pass), ce qui est un peu genant.
Je me suis aventure a creer une macro qui me permettrait d'updater les links sans avoir a taper le mot de passe a chaque fois.
Voici mon essai :
------
Sub BScriteriacopy()
Dim vLinkSources
Dim iLinkSource As Integer
Dim AnySheet As Worksheet
sPath = "S:\Europe\...\"
sName = Dir(sPath & "*.xls")
Do While sName <> ""
Set bk = Workbooks.Open(sPath & sName)
For Each AnySheet In ActiveWorkbook.Worksheets
ActiveWorkbook.Worksheets(AnySheet.Names) _
.Unprotect Password:="Password"
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 Password:="Password"
Next
bk.Close Savechanges:=True
sName = Dir()
Loop
End Sub
----
Le tout relie sur une barre du Toolbox pour le lancer en individuel.
J'ai de meme desactive les updates automatiques a cause de la demande des mots de passes.
A ceci j'ai 2 difficultes auquel je requiers votre aide:
1. La macro ne semble vouloir updater que mon premier fichier dans le repertoire concernee et ne prends pas en compte les autres fichiers.
2. le systeme me demande quand meme le password, et ensuite bug avec une error "Type mismatch" avec en highlight jaune
ActiveWorkbook.Worksheets(AnySheet.Names) _ .Unprotect Password:="Password"
Si je ne tapes pas le password, il s'arrete sur
Set bk = Workbooks.Open(sPath & sName)
*****Questions
Comment faire pour que la macro aille updater tous les liens, delocker le password Workbook ( les worksheets ne sont pas proteges ) et le relocker apres update des infos ?
Merci par avance pour ce probleme un peu complexe :O).
Je vous prie de m'excuser aussi pour l'absence d'accent, mais je travaille sur clavier d'Europe Central.
Merci beaucoup.
Dernière édition: