Macro excel pour mise à jour de liaisons

Yannick0

XLDnaute Nouveau
Bonjour,

Actuellement en stage, j'ai besoin d'aide concernant la réalisation d'une macro.
Je dispose d'une fiche client (jointe) dans laquelle est présent un tableau avec une liste de raisons de refus d'une proposition commerciale. A terme, plusieurs fiches clientes sont prévues. Je dirais une cinquantaine avec 10 feuilles chacune.
Mon souhait serait de faire des statistiques de ces raisons dans un fichier annexe (exemple simplifié joint). Jusque là pas de souci, je sais faire. Le problème apparaît quand mes fiches clientes sont fermées (après modification) et que j'ouvre mon fichier de statistique. Excel n'est pas capable de mettre à jour le fichier. Après recherche sur le net, je me suis rendu compte que seule une macro pouvait s'en occuper. Il me faudrait donc une macro qui ouvre toutes mes fiches à l'ouverture du fichier pour qu'il se mette à jour. Et l'idéal serait qu'elles se referment automatiquement (sinon, ça se fera à la main). Sur Internet, j'ai trouvé une macro pour l'ouverture des fiches et la mise à jour du fichier (Mise à jour des liaisons sur Excel). Vous la trouverez ci-dessous. Seulement, vu mon expérience en macro, je suppose que je dois faire une mauvaise manipulation car cela ne fonctionne pas (je pense aussi qu'il faudrait l'adapter à mes fichiers : nom et emplacement notamment, mais je ne sais pas à quel endroit). Et j'ai beau faire des recherches, je ne sais pas comment faire.
Je voudrais donc savoir si vous pouvez jeter un coup d'oeil à la macro et voir ce qui cloche!

Merci beaucoup!!!!!


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
 

Pièces jointes

  • Fiche client MTH et YAG2.xls
    15.5 KB · Affichages: 62
  • Test-total.xls
    13.5 KB · Affichages: 54

Discussions similaires

Réponses
2
Affichages
434
Réponses
5
Affichages
317
Réponses
9
Affichages
146

Statistiques des forums

Discussions
313 281
Messages
2 096 787
Membres
106 748
dernier inscrit
Abdel93