Bonjour,
En VBA, à partir de la feuille "novembre" du dossier "AN2006", je crée un
nouveau dossier : "Novembre2006", ne comportant que cette feuille.
Lorsque par la suite, j'ouvre ce nouveau dossier, le message sur les
liaisons apparaît. Je souhaiterais qu'au moment de la création de ce
dossier, faire en sorte que les liens soient rompus de façon à éviter le
fameux message des liaisons.
Comment faire en VBA?
D'avance merci.
Noégor
| faire en sorte que les liens soient rompus de façon à éviter le | fameux message des liaisons.
Pour rompre les liens de façon définitive :
'------------------------ Sub test()
Dim LesLiens As Variant LesLiens = ThisWorkbook.LinkSources
For Each lien In LesLiens ThisWorkbook.BreakLink Name:=Lien, Type:=xlExcelLinks Next
End Sub '------------------------
Noegor
Merci à TOUS. Vous m'avez même donné plusieurs solutions. A bientôt pour d'autres tuyaux. Noégor "Noegor" a écrit dans le message de news:
Bonjour, En VBA, à partir de la feuille "novembre" du dossier "AN2006", je crée un nouveau dossier : "Novembre2006", ne comportant que cette feuille. Lorsque par la suite, j'ouvre ce nouveau dossier, le message sur les liaisons apparaît. Je souhaiterais qu'au moment de la création de ce dossier, faire en sorte que les liens soient rompus de façon à éviter le fameux message des liaisons. Comment faire en VBA? D'avance merci. Noégor
Merci à TOUS. Vous m'avez même donné plusieurs solutions.
A bientôt pour d'autres tuyaux.
Noégor
"Noegor" <nospam-rogeon@vol.lu> a écrit dans le message de news:
O1aIYPRGHHA.1232@TK2MSFTNGP05.phx.gbl...
Bonjour,
En VBA, à partir de la feuille "novembre" du dossier "AN2006", je crée un
nouveau dossier : "Novembre2006", ne comportant que cette feuille.
Lorsque par la suite, j'ouvre ce nouveau dossier, le message sur les
liaisons apparaît. Je souhaiterais qu'au moment de la création de ce
dossier, faire en sorte que les liens soient rompus de façon à éviter le
fameux message des liaisons.
Comment faire en VBA?
D'avance merci.
Noégor
Merci à TOUS. Vous m'avez même donné plusieurs solutions. A bientôt pour d'autres tuyaux. Noégor "Noegor" a écrit dans le message de news:
Bonjour, En VBA, à partir de la feuille "novembre" du dossier "AN2006", je crée un nouveau dossier : "Novembre2006", ne comportant que cette feuille. Lorsque par la suite, j'ouvre ce nouveau dossier, le message sur les liaisons apparaît. Je souhaiterais qu'au moment de la création de ce dossier, faire en sorte que les liens soient rompus de façon à éviter le fameux message des liaisons. Comment faire en VBA? D'avance merci. Noégor
Noegor
Bonsoir, J'ai testé le code et le systèm me répond que "lien" n'est pas défini. Je l'ai défini AS Object, mais le lien n'a pas été supprimé et il ne passe pas dans la boucle car j'ai positionné un MsgBox qui ne s'est pas mmanifesté. Je l'ai défini As Variant, il passe dans la boucle mais le lien n'est pas rompu. Que faire? Merci de votre patience et de votre compréhension pour mon ignorance. Bien à vous. Noégor "MichDenis" a écrit dans le message de news:
| faire en sorte que les liens soient rompus de façon à éviter le | fameux message des liaisons.
Pour rompre les liens de façon définitive :
'------------------------ Sub test()
Dim LesLiens As Variant LesLiens = ThisWorkbook.LinkSources
For Each lien In LesLiens ThisWorkbook.BreakLink Name:=Lien, Type:=xlExcelLinks Next
End Sub '------------------------
Bonsoir,
J'ai testé le code et le systèm me répond que "lien" n'est pas défini. Je
l'ai défini AS Object, mais le lien n'a pas été supprimé et il ne passe pas
dans la boucle car j'ai positionné un MsgBox qui ne s'est pas mmanifesté.
Je l'ai défini As Variant, il passe dans la boucle mais le lien n'est pas
rompu.
Que faire?
Merci de votre patience et de votre compréhension pour mon ignorance.
Bien à vous.
Noégor
"MichDenis" <michdenis@hotmail.com> a écrit dans le message de news:
e3PWKfSGHHA.4760@TK2MSFTNGP03.phx.gbl...
| faire en sorte que les liens soient rompus de façon à éviter le
| fameux message des liaisons.
Pour rompre les liens de façon définitive :
'------------------------
Sub test()
Dim LesLiens As Variant
LesLiens = ThisWorkbook.LinkSources
For Each lien In LesLiens
ThisWorkbook.BreakLink Name:=Lien, Type:=xlExcelLinks
Next
Bonsoir, J'ai testé le code et le systèm me répond que "lien" n'est pas défini. Je l'ai défini AS Object, mais le lien n'a pas été supprimé et il ne passe pas dans la boucle car j'ai positionné un MsgBox qui ne s'est pas mmanifesté. Je l'ai défini As Variant, il passe dans la boucle mais le lien n'est pas rompu. Que faire? Merci de votre patience et de votre compréhension pour mon ignorance. Bien à vous. Noégor "MichDenis" a écrit dans le message de news:
| faire en sorte que les liens soient rompus de façon à éviter le | fameux message des liaisons.
Pour rompre les liens de façon définitive :
'------------------------ Sub test()
Dim LesLiens As Variant LesLiens = ThisWorkbook.LinkSources
For Each lien In LesLiens ThisWorkbook.BreakLink Name:=Lien, Type:=xlExcelLinks Next
End Sub '------------------------
DesseJ
Bonjour, Bonsoir Noegor,
Tu peux utiliser ces deux procédures : une pour supprimer les liaisons externes utilisées dans les formules, une pour les noms externes etc.
Cordialement, Steph. D.
'======================== ===============
''SUPPRESSION DES LIENS EXTERNES Sub SupprimeLiaisonsExternesDansFormule() Dim MaFeuille As Worksheet Dim MaCellule As Range Dim MaPlage As Range Dim LxFin#, CxFin# Application.ScreenUpdating = False For Each MaFeuille In ActiveWorkbook.Worksheets MaFeuille.Activate If Application.WorksheetFunction.CountA(MaFeuille.Cells) <> 0 Then With Cells LxFin = .Find("*", [A1], , , xlByRows, xlPrevious).Row CxFin = .Find("*", [A1], , , xlByColumns, xlPrevious).Column End With Set MaPlage = MaFeuille.Range(Cells(1, 1), Cells(LxFin, CxFin)) For Each MaCellule In MaPlage If MaCellule.HasFormula = True And InStr(1, MaCellule.Formula, "[", 0) > 0 Then MaCellule.Formula = MaCellule.Value End If Next MaCellule End If Next MaFeuille Set MaPlage = Nothing Application.ScreenUpdating = True End Sub
Sub EffaceLesNomsReferenceExterne() Dim MaCelluleNommee As Name Dim i As Integer Application.ScreenUpdating = False For i = ActiveWorkbook.Names.Count To 1 Step -1 If ActiveWorkbook.Names(i).RefersTo Like "*]*" Or ActiveWorkbook.Names(i).RefersTo Like "*REF*" Then ActiveWorkbook.Names(i).Delete End If Next Application.ScreenUpdating = True End Sub
Bonjour, Bonsoir Noegor,
Tu peux utiliser ces deux procédures : une pour supprimer les liaisons
externes utilisées dans les formules, une pour les noms externes etc.
Cordialement,
Steph. D.
'======================== ===============
''SUPPRESSION DES LIENS EXTERNES
Sub SupprimeLiaisonsExternesDansFormule()
Dim MaFeuille As Worksheet
Dim MaCellule As Range
Dim MaPlage As Range
Dim LxFin#, CxFin#
Application.ScreenUpdating = False
For Each MaFeuille In ActiveWorkbook.Worksheets
MaFeuille.Activate
If Application.WorksheetFunction.CountA(MaFeuille.Cells) <>
0 Then
With Cells
LxFin = .Find("*", [A1], , , xlByRows,
xlPrevious).Row
CxFin = .Find("*", [A1], , , xlByColumns,
xlPrevious).Column
End With
Set MaPlage = MaFeuille.Range(Cells(1, 1), Cells(LxFin,
CxFin))
For Each MaCellule In MaPlage
If MaCellule.HasFormula = True And InStr(1,
MaCellule.Formula, "[", 0) > 0 Then
MaCellule.Formula = MaCellule.Value
End If
Next MaCellule
End If
Next MaFeuille
Set MaPlage = Nothing
Application.ScreenUpdating = True
End Sub
Sub EffaceLesNomsReferenceExterne()
Dim MaCelluleNommee As Name
Dim i As Integer
Application.ScreenUpdating = False
For i = ActiveWorkbook.Names.Count To 1 Step -1
If ActiveWorkbook.Names(i).RefersTo Like "*]*" Or
ActiveWorkbook.Names(i).RefersTo Like "*REF*" Then
ActiveWorkbook.Names(i).Delete
End If
Next
Application.ScreenUpdating = True
End Sub
Tu peux utiliser ces deux procédures : une pour supprimer les liaisons externes utilisées dans les formules, une pour les noms externes etc.
Cordialement, Steph. D.
'======================== ===============
''SUPPRESSION DES LIENS EXTERNES Sub SupprimeLiaisonsExternesDansFormule() Dim MaFeuille As Worksheet Dim MaCellule As Range Dim MaPlage As Range Dim LxFin#, CxFin# Application.ScreenUpdating = False For Each MaFeuille In ActiveWorkbook.Worksheets MaFeuille.Activate If Application.WorksheetFunction.CountA(MaFeuille.Cells) <> 0 Then With Cells LxFin = .Find("*", [A1], , , xlByRows, xlPrevious).Row CxFin = .Find("*", [A1], , , xlByColumns, xlPrevious).Column End With Set MaPlage = MaFeuille.Range(Cells(1, 1), Cells(LxFin, CxFin)) For Each MaCellule In MaPlage If MaCellule.HasFormula = True And InStr(1, MaCellule.Formula, "[", 0) > 0 Then MaCellule.Formula = MaCellule.Value End If Next MaCellule End If Next MaFeuille Set MaPlage = Nothing Application.ScreenUpdating = True End Sub
Sub EffaceLesNomsReferenceExterne() Dim MaCelluleNommee As Name Dim i As Integer Application.ScreenUpdating = False For i = ActiveWorkbook.Names.Count To 1 Step -1 If ActiveWorkbook.Names(i).RefersTo Like "*]*" Or ActiveWorkbook.Names(i).RefersTo Like "*REF*" Then ActiveWorkbook.Names(i).Delete End If Next Application.ScreenUpdating = True End Sub