Excel2010. Liaisons externes
Y
Bonjour,
Ouvrant un fichier Excel2010 que j'utilise depuis longtemps, me sont signalées des liaisons avec classeur externe. Je trouve le classeur en question en cliquant sur "Modifier les liens". Mais j'aimerais trouver la ou les cellules exactes qui causent ces liaisons.
Merci
Bonsoir,
A adapter
Cdlt
'Attribute VB_Name = "ListeLiaisonsVersClasseurs"
'rechercher dans un classeur les liaisons vers d'autres classeurs
Sub ScanForClasseursPrecedents()
'renvoie dans un nouveau classeur l'adresse des cellules liées
'à d'autres classeurs et le nom et le chemin de leur classeur source
Dim Arr() As Variant, cell As Range, sht As Worksheet, NLien&
NLien = 0
For Each sht In ActiveWorkbook.Worksheets
sht.Activate
For Each cell In sht.UsedRange
If ClasseurPrecedent(cell) <> "" Then
NLien = NLien + 1
ReDim Preserve Arr(1 To 2, 1 To NLien)
Arr(1, NLien) = sht.Name & "!" & cell.Address
Arr(2, NLien) = ClasseurPrecedent(cell)
End If
Next cell
Next sht
If NLien = 0 Then
MsgBox "Aucune liaison externe dans " & ActiveWorkbook.Name
Exit Sub
End If
Workbooks.Add
Range("A1").Value = "Cellule liée :"
Range("B1").Value = "Classeur source :"
With Range("A1:B1")
.Font.Bold = True
.Interior.ColorIndex = 35
End With
For i = 1 To UBound(Arr, 2)
Cells(i + 1, 1).Value = Arr(1, i)
Cells(i + 1, 2).Value = Arr(2, i)
Next
Columns("A:B").AutoFit
End Sub 'fs
Function ClasseurPrecedent(cell As Range)
'renvoie le nom et le chemin d'un classeur source d'une liaison
'(Excel 2000 ou +)
Dim tmp$
ClasseurPrecedent = ""
On Error Resume Next
tmp = Split(cell.Formula, "'")(1)
On Error GoTo 0
If tmp <> "" And LCase(tmp) Like "*.xls*" Then
pos = InStr(1, tmp, "]")
tmp = Application.Substitute(Left(tmp, pos - 1), "[", "")
ClasseurPrecedent = tmp
End If
End Function 'fsY
Fabuleux ! Le pb se posait sur un fichier avec 15 onglets. Ta macro m'a détecté les 2 cellules concernées (résultat d'un malencontreux copié-collé depuis un autre classeur.
Il ne me reste plus qu'à essayer de comprendre ce que tu m'as passé... mais c'est une autre paire de manches.
Merci beaucoup.