OVH Cloud OVH Cloud

liaisons inconnues

3 réponses
Avatar
Greffier
Bonjour,

Je maintiens à jour plusieurs classeurs, et pour l'un d'entre eux j'obtiens
une erreur certainement classique, dont je n'ai pas encore déterminé
l'origine :
"le classeur que vous avez ouvert comporte des liaisons avec un autre
classeur. Voulez-vous mettre à jour ce classeur avec mes mises à jour de
l'autre classeur".

C'est la première fois que j'obtiens cette erreur, où dois-je trouver ces
liaisons pour les faire disparaître.

Merci pour toutes vos suggestions.

cordialement.

greffier.

3 réponses

Avatar
olitoto
Bonjour,

On a ce message quand on a fait un "collage spécial" "avec liaison" de
données figurant dans un autre classeur.

ca peut être des valeurs , mais aussi un texte ou un graphisme ..

Olivier

"Greffier" a écrit dans le message de news:

Bonjour,

Je maintiens à jour plusieurs classeurs, et pour l'un d'entre eux
j'obtiens
une erreur certainement classique, dont je n'ai pas encore déterminé
l'origine :
"le classeur que vous avez ouvert comporte des liaisons avec un autre
classeur. Voulez-vous mettre à jour ce classeur avec mes mises à jour de
l'autre classeur".

C'est la première fois que j'obtiens cette erreur, où dois-je trouver ces
liaisons pour les faire disparaître.

Merci pour toutes vos suggestions.

cordialement.

greffier.




Avatar
JB
Bonjour,

Edition/Liaisons donne la liste des liaisons.

Cordialement JB
Avatar
Michel Gaboly
Bonsoir JB,

Edition/Liaisons ne donne que la liste des documents vers lesquels existe une liaison.

Ce n'est pas suffisant pour repérer individuellement chaque élément lié (nom, formules, shape qui appelle une macro, ...
;-(((


Ceci dit VBA résoud le problème en général ; par exemple les 2 ro utines ci-dessous permettent de repérer tous les noms
de niveau classeur ou feuille (RechercheNoms) ou toutes les formules (Rec hercheFormules) contenant une chaîne de
caractère particulière, ici ".xls"
dans les 2 cas, qui à de TRÈS rares exceptions près correspond à une liaison vers un autre classeur.

Dans les 2 cas l'info s'affiche dans l'environnement VBA, dans la fenêt re "Exécution", accessible par le menu Affichage
ou par un raccourci clavier (Cmd + G sur Mac ou Ctrl + G sous Windows).

Le second argument de RechercheNoms permet d'indiquer si on veut que les noms trouvés soient détruits.


Private Sub RechercheNoms()
LiaisonsDansNoms ".xls", False
End Sub

Private Sub RechercheFormules()
LiaisonsDansFormules ".xls"
End Sub

Sub LiaisonsDansNoms(Cible As String, Supp As Boolean)
Dim Confirmation As Integer, w As Worksheet, n As Name, Mat(1000) As Stri ng, i As Integer
' Confirmation
If Supp Then
Confirmation = MsgBox("Attention, Supp est à True." & vb NewLine & vbNewLine _
& "Voulez-vous vraiment détruire les noms trouvés?", vbY esNo + vbExclamation)
If Confirmation = 7 Then Supp = False
End If
' Collections Names des feuilles
For Each w In ActiveWorkbook.Sheets
For Each n In w.Names
If InStr(1, n.RefersTo, Cible) <> 0 Then
Mat(i) = n.Name
Debug.Print w.Name & " " & n.Name
If Supp Then n.Delete
i = i + 1
End If
Next n
Next w
' Collection Names du classeur. Pour une feuille donnée, un même nom défini au niveau classeur et au
' niveau feuille peut être trouvé. Il n'est pas nécessaire de le retraiter
For Each n In ActiveWorkbook.Names
If InStr(1, n.RefersTo, Cible) <> 0 Then
If Not IsNumeric(Application.Match(n.Name, Mat, 0)) Then
Debug.Print n.Name
If Supp Then n.Delete
End If
End If
Next n
End Sub

Sub LiaisonsDansFormules(Cible As String)
Dim w As Worksheet, c As Range
For Each w In ActiveWorkbook.Sheets
For Each c In w.UsedRange
If InStr(1, c.Formula, Cible) <> 0 Then
Debug.Print w.Name & " " & c.Address(False, False)
End If
Next c
Next w
End Sub


Ce n'est pas très convivial, mais c'est un outil perso, et je n'ai pas fait d'interface.

Bonjour,

Edition/Liaisons donne la liste des liaisons.

Cordialement JB




--
Cordialement,

Michel Gaboly
www.gaboly.com