Macro excel pour mise à jour de liaisons

Fermé
Yannick - 10 août 2009 à 09:46
 Yannick - 12 août 2009 à 10:10
Bonjour,

Actuellement en stage, j'ai besoin d'aide concernant la réalisation d'une macro.
Je dispose d'une fiche client 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. 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 (https://support.microsoft.com/fr-fr/help/19907 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
A voir également:

1 réponse