• Initiateur de la discussion Initiateur de la discussion steph.777
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

steph.777

Guest
bonsoir le forum
le code ci dessous doit me servir a supprimer les liasons sur differentes feuilles mais il ne fonctionne pas, le 😡' 😡pose probleme ,je pensais mettre 🙂"" 🙂donc du vide mais cela ne fonctionne pas non plus

Cells.Replace What:="'C:\Documents and Settings\steph\Bureau\finance\[finances allerger.XLS]", Replacement:="'", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False

merci d'avance
 
Re : supprimer liaison

Bonsoir,
De toutes les méthodes que j'ai testées la seule qui m'a vraiment viré les liaisons (testé avec findlinks) est cette méthode qui remplace les formules par leur valeur
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim n As Integer
Dim LCell
Dim FormulaCells As Range
On Error Resume Next
For n = 1 To Sheets.Count
Set FormulaCells = Cells.SpecialCells(xlFormulas).Range("XX:XX")
For Each LCell In FormulaCells
LCell.Value = LCell.Value
Next
Next
End Sub
A adapter
A+
kjin
 
Re : supprimer liaison

Bonjour à tous

Code:
For Each LCell In FormulaCells
LCell.Value = LCell.Value
Next

devient :

Code:
For Each LCell In FormulaCells
     if instr(Lcell.formula,"]") then
          lcell.formula = mid(Lcell.formula, instr(lcell.formula,"]") + 1, len(lcell.formula))
     end if
Next
 
Re : supprimer liaison

re:

c'est vrai, je n'ai meme pas penser qu'il pouvait y avoir plusieurs liens sur la meme formule
Code:
For Each LCell In FormulaCells
     if instr(Lcell.formula,"]") then
          lcell.formula = mid(Lcell.formula, instr(lcell.formula,"]") + 1, len(lcell.formula))
     end if
Next

devient :
Code:
cherche = "C:\Documents and Settings\steph\Bureau\finance\[finances allerger.XLS]"
For Each LCell In FormulaCells
     while instr(lcell.formula,cherche)>0
          lcell.formula = left(lcell.formula,instr(lcell.formula,cherche)-1) & mid(Lcell.formula, instr(instr(lcell.formula,cherche)+1,lcell.formula,"]") + 1, len(lcell.formula))
     wend
Next

à tester, je ne peux faire les essais
 
Re : supprimer liaison

Bonjour, bonjour Wilfried,
J'ai tester sur un fichier bidon
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim n As Integer
Dim LCell
Dim FormulaCells As Range
On Error Resume Next
For n = 1 To Sheets.Count
Set FormulaCells = Cells.SpecialCells(xlFormulas).Range("XX:XX")
Cherche = "finances allerger"
For Each LCell In FormulaCells
If Lcell.formula like "*" & Cherche & "*"
LCell.Value = LCell.Value
end If
Next
Next
End Sub
A adapter
A+
kjin
 
Re : supprimer liaison

Re,
Wilfried était dans le vrai, comme d'habitude 😉
Teste cette mouture à adapter

Sub SuppLiens()
On Error Resume Next
Cherche = "Plan de finance 2007 allerger"
For Each LCell In ActiveSheet.Cells.SpecialCells(xlFormulas)
If LCell.Formula Like "*" & Cherche & "*" Then
x = LCell.Formula
y = Left(x, 2) & Mid(x, InStr(1, x, "]") + 1)
LCell.Formula = y
End If
Next
End Sub
A+
kjin
 

Pièces jointes

Re : supprimer liaison

bonjour et bon dimanche

merci kjin pour le code
il fonctionne pour "apport previsionnel global" mais quand le lien a une autre feuille du classeur change , rien ne se passe
nouvelle feuille est "accueil bilan"
j' ai 15 feuilles differentes

a+ steph
 
Re : supprimer liaison

Bonjour,
C'est normal, puisque la variable "cherche" est connue et fixée dans la macro.
Soit tu récupères la valeur de cette variable, dans une cellule par exemple, pour supprimer un(des) lien(s) particulier(s), soit plus simplement, si comme tu sembles le dire, tu souhaites enlever tous les liens, il suffit dans ce cas de supprimer la condition de nom de fichier :
Sub SuppLiens()
On Error Resume Next
For Each LCell In ActiveSheet.Cells.SpecialCells(xlFormulas)
x = LCell.Formula
y = Left(x, 2) & Mid(x, InStr(1, x, "]") + 1)
LCell.Formula = y
Next
End Sub
A+
kjin
 
Re : supprimer liaison

re
moi j' ai compris que la variable cherche correspond au classeur lié
accueil bilan et apport previsionnel global des feuilles du classeur en cours

ne faut t'il pas declarer les variables justement

ce dernier code a virer les liens de la feuilles du classeurs en cous avec l'autre classeurs mais aussi malheureusement avec les feuilles du classeur en cour.
a tu regardé ma derniere piece jointe

encore merci je pense qu'on approche
 
Re : supprimer liaison

Bonjour tout le monde,

Je ne sais pas si j'ai bien compris la problèmatique mais la macro ci joint remplace toutes les liaisons par le classeur actif. Il faut biensur avoir les même noms de feuilles. Est ce que cela peut aider ?

Code:
Sub changeliaison()
Dim Liaison As Variant

For Each Liaison In ActiveWorkbook.LinkSources
ActiveWorkbook.ChangeLink Name:=Liaison, newname:=ActiveWorkbook.Name, Type:=xlExcelLinks
Next Liaison


End Sub

Bonne journée,

Ninbihan
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
4
Affichages
669
A
V
  • Question Question
Réponses
4
Affichages
2 K
volwerik
V
Réponses
11
Affichages
3 K
M
Réponses
5
Affichages
4 K
Retour