Macro à appliquer

étiboom Messages postés 36 Statut Membre -  
étiboom Messages postés 36 Statut Membre -
J'ai cette maccro qu'un ami m'a filer mais il est très caler en excel et a dû penser que je comprendrais facilement, mais voilà que je n'y vois pas très clair. Elle est censer aller chercher le chemin d'acces de mes fichiers liés à mon classeur puisque c'est sur un autre serveur et que ca ne peut se faire automatiquement.

Merci à tout ceux qui y passeront du temps

Macro:

Sub changementliaison()

Dim FName As String, aLinks As Variant, wb As Workbook
Dim nomserveur, OldServer, Newlinks, OldDrive As String
Dim tempPath As String
Dim longueur As Integer, a As Integer, b As Integer

FName = Application.GetOpenFilename("Microsoft Excel Files (*.xls),
*.xls", _
, "Browse...", , False)
If FName = "False" Then Exit Sub

Set wb = Workbooks.Open(FName, UpdateLinks:=0)
Application.AskToUpdateLinks = False aLinks = wb.LinkSources(xlOLELinks)
' recherche du document à modifier

If Not IsEmpty(aLinks) Then
MsgBox wb.FullName & " Contient " & UBound(aLinks) & " Liaisons"
'affichage du nombre de liaisons dans le document
OldServer = InputBox("Entrez le nom du serveur que vous voulez
supprimer ")"
longueur = Len(OldServer)
For i = 1 To UBound(aLinks)

a = InStr(aLinks(i), "\\")
b = a + 2
nomserveur = Mid(aLinks(i), b, longueur)

If nomserveur = OldServer Then

If InStr(aLinks(i), "\\") > 0 Then

MsgBox "Ancien chemin unc de la liaison " & aLinks(i)

Newlinks = InputBox("Entrez le nom du nouveau serveur")

wb.ChangeLink aLinks(i), _
Application.Substitute(aLinks(i), _
OldServer, Newlinks, 1), xlOLELinks
Else

End If
Else
End If
Next i
wb.Save
End If

Application.AskToUpdateLinks = True

wb.Close False

End Sub
A voir également:

1 réponse

melanie1324 Messages postés 1561 Statut Membre 156
 
Coucou,

je ne peux pas tout t'expliquer mais voici ce que tu peux faire pour mieux comprendre.

Tu ouvres ton classeur excel, tu ouvres vba mais de manière à pouvoir voir ton classeur excel.
Dans vba, tu positionnes ton curseur en dessous de Sub changementliaison()

et tu appuies sur F8.
Tu verras une ligne jaune apparaître. Appuie sur F8 jusqu'à la fin, la ligne jaune est la ligne qui va être traité.
Cela te permet de voir ce que fait la macro pas à pas.
0
étiboom Messages postés 36 Statut Membre 1
 
Salut Mélanie 1324!

Tu m'as déjà aidé auparavant et je t'en remercie encore! ( une chance que des gens comme toi se promène sur les forums)

Le problème, lorsque je fais ce que tu me dis, c'est qu'il m'affiche le message :

Erreur de compilation :
Erreur de syntaxe

Et là on me surligne cette ligne (qui est la 5 ème, si tu te réfère à la macro que j'ai mit dans mon message)

FName = Application.GetOpenFilename("Microsoft Excel Files (*.xls),

Sérieux j'y comprend rien, mais je vois que ça doit pas être sorcier...

Merci pour ton temps :)
0
melanie1324 Messages postés 1561 Statut Membre 156
 
coucou,

il avait fait une erreur.

remplaces :
FName = Application.GetOpenFilename("Microsoft Excel Files (*.xls),
*.xls", _
, "Browse...", , False)

par :
FName = Application.GetOpenFilename("Microsoft Excel Files (*.xls),*.xls", , "Browse...", False)
0
étiboom Messages postés 36 Statut Membre 1
 
salut :)

Tu as bien raison, cette ligne était mal rentré. Merci!! maintenant (quand je fait F8 ) il s'arrête 3 ligne plus bas :

Application.AskToUpdateLinks = False aLinks = wb.LinkSources(xlOLELinks)

Encore une fois, c'est une erreur de synthaxe... Merci de ton temps sérieusement c'est grandement apprécié mélanie1324!!!
0
melanie1324 Messages postés 1561 Statut Membre 156
 
je ne connais pas cette ligne
Application.AskToUpdateLinks = False aLinks = wb.LinkSources(xlOLELinks)

mais a priori il s'agirait d'une mise à jour des liaisons, pour elle, il vaut mieux que tu fasses des recherches sur google.
0
étiboom Messages postés 36 Statut Membre 1
 
je l'ai trouvé l'erreur pour cette ligne!!

Application.AskToUpdateLinks = False = wb.LinkSources(xlOLELinks) (elle est ok comme ça)

mais maintenant j'ai un questionnement sur des lignes où est inscrit des trucs (vert) du genre :
-' recherche du document à modifier
-'affichage du nombre de liaisons dans le document

je me demande ce que je dois leur faire? ( c'est comme si la macro passait par dessus dans l'exécution)

ET
que dois-je entré dans la partie de l'ancien serveur a supprimer de cette ligne? je veux juste qu'il ouvre la boîte et fasse le chemin d'accès jusqu'à la liste des fichiers(tous placés dans le même document)

OldServer = InputBox("Entrez le nom du serveur que vous voulez supprimer ")

on dirait qu'il cherche quelque chose a supprimer, tout ce que je veux c'est "mettre à jour les liasons"

Merci
0