Sauvegarder une feuille sans les liens

Bonjour,

J'ai plusieurs feuilles dans un classeur dont une que je cherche à sauvegarder par une macro (ci dessous). Or, comme la feuille sauvegardée contient des liens vers d'autres feuilles du classeur, ceux-ci apparaissent comme #REF! dans la sauvegarde. je voudrais donc remplacer toutes les formules par leur valeur, mais sans altérer la feuille d'origine. Quelqu'un a une solution?

Merci

François

Sub Sauvegarder()

    Dim Extension As String
    Dim Repertoire As String
    Dim NomFichier As String
    Dim Fournisseur As String

    Application.ScreenUpdating = False

    ThisWorkbook.ActiveSheet.Copy

    Fournisseur = ActiveSheet.Range("NomFournisseur").Value
    Extension = ".xlsx"
    Repertoire = "P:\Repertoire\"
    NomFichier = Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd")  & " " & Fournisseur
    NomFichier = InputBox("Nom du fichier :", "Choix du nom de fichier", NomFichier)

    With ActiveWorkbook
        .SaveAs Filename:=Repertoire & NomFichier & Extension, FileFormat:=51
        .Close
    End With

    End Sub

Bonjour,

Avant de procéder à ta sauvegarde, il faut simplement commencer par copier les cellules concernées ...sur elles-mêmes ...

en utilisant .Copy et ensuite .PasteSpecial (xlvalues) ...

Bonjour François, bonjour le forum,

Peut-être comme ça :

Sub Sauvegarder()
Dim Extension As String
Dim Repertoire As String
Dim NomFichier As String
Dim Fournisseur As String

Application.ScreenUpdating = False
ThisWorkbook.ActiveSheet.Copy
ActiveSheet.Cells.Copy
ActiveSheet.Range("A1").PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
ActiveCell.Select
Fournisseur = ActiveSheet.Range("NomFournisseur").Value
Extension = ".xlsx"
Repertoire = "P:\Repertoire\"
NomFichier = Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd") & " " & Fournisseur
NomFichier = InputBox("Nom du fichier :", "Choix du nom de fichier", NomFichier)

With ActiveWorkbook
    .SaveAs Filename:=Repertoire & NomFichier & Extension, FileFormat:=51
    .Close
End With
End Sub

J'ai essayé, mais ça ne fonctionne pas: Soit je copy/paste values avant la sauvegarde et j'écrase les formules d’origine, soit je copie après avoir copié la feuille dans le nouveau Workbook et dans ce cas les liens sont perdus et les cellules indiquent #REF!

Merci, François

Bonjour à tous,

A tester ...

Sub Sauvegarder()
Dim Extension As String
Dim Repertoire As String
Dim NomFichier As String
Dim Fournisseur As String
Dim Links As Variant
Dim i As Integer

Application.ScreenUpdating = False

ThisWorkbook.ActiveSheet.Copy

Fournisseur = ActiveSheet.Range("NomFournisseur").Value
Extension = ".xlsx"
Repertoire = "P:\Repertoire\"
NomFichier = Format(Date, "yy") & Format(Date, "mm") & Format(Date, "dd") & " " & Fournisseur
NomFichier = InputBox("Nom du fichier :", "Choix du nom de fichier", NomFichier)

With ActiveWorkbook
    ' supprimer les liens
    On Error Resume Next
    Links = .LinkSources(Type:=xlLinkTypeExcelLinks)
    On Error GoTo 0
    If Not IsEmpty(Links) Then
      For i = 1 To UBound(Links)
        .BreakLink Name:=Links(i), Type:=xlLinkTypeExcelLinks
      Next i
    End If

    .SaveAs Filename:=Repertoire & NomFichier & Extension, FileFormat:=51
    .Close
End With

End Sub

Merci James,

ça ne fonctionne pas non plus. Comme j'ai assez peu de formules, j'ai finalement créé une macro qui les réécrit dans leurs cellule respectives.

Bonne semaine.

Bonjour,

Content que tu aies trouvé une solution ...

Pour info et par acquis de conscience, je viens de faire un test ... qui fonctionne ...

Problème d’environnement (je suis sur un réseau d'entreprise assez verrouillé) ? erreur ce copier / coller? Bref, tant mieux si ça marche Cela dit, recopier les cellules a finalement un avantage: ça les remet à zéro et m'évite toute erreur de saisie.

Bonne semaine à toi aussi.

Re,

L'essentiel est que tu aies la solution opérationnelle ... dans le cadre de tes contraintes ...

Rechercher des sujets similaires à "sauvegarder feuille liens"