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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <spam@spam.fr> a écrit dans le message de news:
ujXdKBBAGHA.344@TK2MSFTNGP11.phx.gbl...
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.
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.
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
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.
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.