Rompre les liens entre classeurs

Bonjour le forum,

J'ai trouvé une fonction sur le forum qui permet d'importer des données d'un classeur fermé et ça marche nickel.

Mon seul soucis est que lorsque les données sont importées, les liens entre classeurs le sont aussi.

Savez-vous comment les supprimer ?

Function LiaisonExt(Fichier As String, Feuille As String, _
 Ligne As Long, Col As Integer)
 With CreateObject("Excel.Application").Workbooks.Open(Fichier)
 LiaisonExt = .Worksheets(Feuille).Cells(Ligne, Col)
 .Close False
 End With
 End Function

Merci et bonne journée !

Sub toto() 
    dim lesLinks As variant, i as integer
    lesLinks = activeworkbook.linksources(type:=xllinktypeexcellinks) 

    for i = 1 To ubound(lesLinks) 
        activeworkbook.breaklink _ 
        name:=lesLinks(i), _ 
        type:=xllinktypeexcellinks 
    next i 
end sub 

Devrait gazer

Salut !

Oé super ça m'enlève mon problème à l'enregistrement !

Par contre à chaque fois que j'utilise la fonction, on me demande si je veux garder le lien, et là je n'arrive pas à intégrer ta macro dans la fonction :/

Merci !

tu ne peux pas intégrer un sub à une fonction ça ne fait aucun sens... Ne sachant pas comment tu appelles ta fonction je ne vois pas comment je pourrais t'aider...

Pour éviter les messages il suffit de mettre un application.Screenupdating=false

Pour appeller mon sub, call toto... Bon courage.

Ah d'accord, ma fonction c'est LiaisonExt ( ) qui est définie dans le code sur premier message.

Function LiaisonExt(Fichier As String, Feuille As String, _
 Ligne As Long, Col As Integer)
 With CreateObject("Excel.Application").Workbooks.Open(Fichier)
 LiaisonExt = .Worksheets(Feuille).Cells(Ligne, Col)
 .Close False
 ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
 End With
 End Function

Avec cette fonction j'importe des données d'autres classeurs. Le truc c'est que j'importe plein de données, donc quand je fais le calcul de 40 cellules, je dois à chaque répondre "Oui" ou "Non" à la question de garder le lien. Le truc c'est que je cherche à intégrer dans mon fonction une commande pour ne pas poser la question ou supprimer les liens directement.

Thks !

Bon vu que tu ne comprends rien je vais faire des suppositions... et du code sale...

Function LiaisonExt(Fichier As String, Feuille As String, _
 Ligne As Long, Col As Integer)
application.displayalerts = false
 With CreateObject("Excel.Application").Workbooks.Open(Fichier)
 LiaisonExt = .Worksheets(Feuille).Cells(Ligne, Col)
 .Close False
 ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
 End With
call toto
application.displayalerts = true
 End Function

J'ai bien capté qu'on ne fait pas un call dans une fonction, le soucis n'est pas là.

Comme dis dans mon précédent post, je ne comprend pas mon classeur demande la mise à jour des liens alors que j'ai mis ta macro

Bon courage.

Le jeune idiot en VBA que je suis te remercie.

Avec plaisir.

Conseil pour jeune idiots en VBA: Au lieu de piquer du code nul, demande toi ce que tu veux faire.

Une fonction qui va chercher une cellule c'est naze. Tu peux aussi bien le coder dans un sub sans faire des liens en copiant la value directement

Si j'utilise une fonction comme ça c'est parce que ça me permet de choisir sur plusieurs classeurs qui seront souvent modifiés, donc j'ai une liste déroulante avec mes noms et un tableau ou il y'a le chemin. ca me semblait bien et fonctionne comme je le souhaite.

Pour l'instant je ne suis pas encore capable de faire ce genre de chose seul, c'est pour ça que je me sers de l'existant en le modifiant un peu. Et j'ai bien compris qu'un call dans une fonction n'est pas bon si ça peut te rassurer ^^

Rechercher des sujets similaires à "rompre liens entre classeurs"