Microsoft 365 Liaisons rompue

Bob 31

XLDnaute Occasionnel
Bonjour
J'ai un classeur qui comporte des liaisons avec plusieurs sources externes (autres fichiers Excel sans macro et avec macro) je souhaiterai quand je supprime un fichier source (donc la liaison est rompue) mettre
#REF!
et non garder les résultats de la liaison de départ lorsque la liaison était correcte.

Merci d'avance.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @BOUBÉE,

Un essai avec une macro.
On ne recherche que le premier fichier externe de chaque formule sur toutes les feuilles.
Si dans une formule il y a plus d'un fichier externe référencé, la macro ne traite que le premier.
Cliquer sur le bouton Test.

La macro est dans module1:
VB:
Sub Test()
Dim f As Worksheet, cell As Range, debut As String
Dim dicoExiste As New Dictionary, fichier As String, fichierExiste
Dim dicoCell As New Dictionary, clef

   Set dicoExiste = CreateObject("scripting.dictionary")
   dicoExiste.CompareMode = TextCompare
   On Error Resume Next
   For Each f In Worksheets
      With f
         .Select
         Set cell = Cells.Find("[*]", LookIn:=xlFormulas)
         If Not cell Is Nothing Then
            debut = cell.Address
            Do
               fichier = Left(cell.Formula, InStr(cell.Formula, "]") - 1)
               fichier = Replace(fichier, "[", "")
               fichier = Replace(fichier, "=", "")
               fichier = Replace(fichier, "'", "")
               If Not dicoExiste.Exists(fichier) Then
                  fichierExiste = Dir(fichier)
                  dicoExiste.Add fichier, fichierExiste <> ""
               End If
               If Not dicoExiste(fichier) Then dicoCell.Add cell.Address, ""
               Set cell = Cells.FindNext(cell)
            Loop Until debut = cell.Address
            If dicoCell.Count > 0 Then
               For Each clef In dicoCell.Keys: ActiveSheet.Range(clef) = CVErr(xlErrRef): Next
            End If
            dicoCell.RemoveAll
         End If
      End With
   Next f
End Sub
 

Pièces jointes

  • BOUBÉE- liaison- v1.xlsm
    22.4 KB · Affichages: 15

Bob 31

XLDnaute Occasionnel
Re
Je m'exprime mal : avec ce fichier ça casse les liaisons =Réf
quand elles sont supprimées mais ensuite si on veut remettre le lien, le chemin à été cassé de la cellule à coller.
Lien =Réf
Alors que si je souhaite recréer un fichier source avec la bonne appellation le lien programmé du départ puisse refonctionner
Merci
 

Bob 31

XLDnaute Occasionnel
Bonjour
C‘est vrai que ma demande est particulière mais j’aimerai que lorsque les liaisons avec plusieurs sources externes (autres fichiers Excel sans macro et avec macro) n’existent plus ou ne sont pas correcte le coller fait apparaître :
#REF!
et lorsque par la suite si je recré les classeurs avec la bonne appellation la liaison refonctionne avec cette fois ci le bon résultat du lien.

Merci d'avance.
 

eriiic

XLDnaute Barbatruc
Bonjour à tous,
et lorsque par la suite si je recré les classeurs avec la bonne appellation la liaison refonctionne avec cette fois ci le bon résultat du lien.
Si tu mets #REF! tu perds la liaison dont la ref de la cellule.
Il faudra reconstruire toutes tes formules une par une.
A mon avis ce n'est pas un bon plan...
Tu pourrais te contenter de mettre la cellule en fond rouge dans la macro de mapomme
eric
 

Dranreb

XLDnaute Barbatruc
Bonjour.
En tout cas il ne faut pas toucher à la formule. Si Excel n'affiche pas de lui même #REF! quand la liaison est rompue, tant pis, on ne peut rien y faire. Tout ce qu'on peut faire c'est vérifier l'état des liaisons. À cette condition seulement il sera possible ultérieurement de la changer vers un fichier existant.
 

Bob 31

XLDnaute Occasionnel
Re Bonjour
Ci après la formule de la liaison :

Sub MettreFormules()
Const Année = "2021"
Dim L&, NomPré
L = 2
Do: NomPré = Cells(L, "B").Value: If VarType(NomPré) <> vbString Then Exit Do
Cells(L, "C").Resize(12, 30).FormulaR1C1 = "='\\Srvboubee\drh\" & NomPré _
& "\[" & NomPré & " " & Année & ".xlsx]ANNUEL'!R[" & 2 - L & "]C"
L = L + 12
Loop
End Sub

Cela fonctionne très bien fichier ouvert ou fermé et la mise à jour,
mais si un classeur source est supprimé alors cela me garde le dernier résultat du fichier source, je souhaiterai dans ce cas qu'apparaisse =Réf
et si un jour je recrée le fichier source avec la bonne appellation que le nouveau résultat du fichier source réapparaisse.
Merci d'avance
 

Discussions similaires

Réponses
4
Affichages
338
  • Résolu(e)
Microsoft 365 planning
Réponses
8
Affichages
426
Réponses
12
Affichages
439

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali