Enregistrement d'une copie de sauvegarde sans les liaisons

  • Initiateur de la discussion Initiateur de la discussion Patanes
  • 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 !

P

Patanes

Guest
Bonjour,

Je cherche un code vba me permettenat d'enregistrer une copie d'un classeur qui comporte des liaisons avec un autre classeur. Cette copie, elle ne doit pas prendre en compte les liaisons mais seulement les valeurs. J'utilise Excel 2003

Merci d votre aide
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

traiter toutes les cellules avec des liaisons en faisant un copier - collage spécial-valeur : ex sur une cellule ci dessous.
Range("A5").Select 'ta cellule avec une liaison
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

pour traiter plusieurs cellules, les preselectionner et faire un
for each vcell in selection
Application.CutCopyMode = False
vcell.Copy
vcell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
next

nb : attention! apres action, les liaisons sont définitivements perdues
Frédéric
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

Ce que je cherche c'est enregistrer une copie( actuellement cette copie se fait automatiquement en vb(action sur clic)) de mon classeur sans les liaison mais en gardant intact le classeur d'origine et également les liaisons
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

apres copie auto de ton fichier, il ne te reste plus qu'à lancer ma macro apres avoir paramétré la plage à traiter :

Set Sel = Range("A1:A56") 'ta plage
for each vcell in Sel
Application.CutCopyMode = False
vcell.Copy
vcell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
next

A tester!
dis moi
Cdt
frédéric
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

Re,

Je ne voudrai pas lancer de macro après la sauvegarde car cette sauvegarde est pour des utilisateur ne connaissant peu ou très peu EXcel
Non, mais ta macro qui enregistre une copie de ton classeur, à la place d'un simple SaveAs (ou SaveCopyAs), pourrait, enregistrer la copie du classeur, supprimer toutes les liaisons dans cette copie puis le réenregistrer ?

Pour supprimer toutes les liaisons (attention à ne pas l'appliquer sur ton classeur original), un truc comme ça devrait le faire

Code:
Sub SupprLiaisons()
Dim ListLiens, i as long
    ListLiens = ActiveWorkbook.LinkSources
    For i = LBound(ListLiens) To UBound(ListLiens)
        ActiveWorkbook.BreakLink ListLiens(i), xlLinkTypeExcelLinks
    Next i
End Sub
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

Re,

Non, mais ta macro qui enregistre une copie de ton classeur, à la place d'un simple SaveAs (ou SaveCopyAs), pourrait, enregistrer la copie du classeur, supprimer toutes les liaisons dans cette copie puis le réenregistrer ?

Pour supprimer toutes les liaisons (attention à ne pas l'appliquer sur ton classeur original), un truc comme ça devrait le faire

Code:
Sub SupprLiaisons()
Dim ListLiens, i as long
    ListLiens = ActiveWorkbook.LinkSources
    For i = LBound(ListLiens) To UBound(ListLiens)
        ActiveWorkbook.BreakLink ListLiens(i), xlLinkTypeExcelLinks
    Next i
End Sub
Je vois pas trop bien ou le mettre sous le code
je te joins mon code actuel

Private Sub CommandButton1_Click()


' Determination du nom
Dim nom As String
nom = Year(Date) - 1 & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
' Message confirmant la sauvegarde du classeur
rep = MsgBox("Votre classeur est sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")
' Boite de message
If MsgBox("Voulez vous envoyer le classeur..??", vbYesNo, "Demande de confirmation") = vbYes Then
' Action si réponse OUI de la boite de message
' Ouverture de la fenêtre de messagerie
Application.Dialogs(xlDialogSendMail).Show
' Boite de message
rep = MsgBox("Le classeur a été envoyé..!", , "Action de la messagerie")
' Action si réponse NON de la boite de message
Else
' Boite de message
rep = MsgBox("Le classeur n'a pas été envoyé..!", , "Action de la messagerie")
End If
End Sub
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

voir ci dessous!

Sub SupprLiaisons()
Dim ListLiens, i as long
ListLiens = ActiveWorkbook.LinkSources
For i = LBound(ListLiens) To UBound(ListLiens)
ActiveWorkbook.BreakLink ListLiens(i), xlLinkTypeExcelLinks
Next i
End Sub

Private Sub CommandButton1_Click()


' Determination du nom
Dim nom As String
nom = Year(Date) - 1 & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
' Message confirmant la sauvegarde du classeur
rep = MsgBox("Votre classeur est sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")


call SupprLiaisons
activeworkbook.save

' Boite de message
If MsgBox("Voulez vous envoyer le classeur..??", vbYesNo, "Demande de confirmation") = vbYes Then
' Action si réponse OUI de la boite de message
' Ouverture de la fenêtre de messagerie
Application.Dialogs(xlDialogSendMail).Show
' Boite de message
rep = MsgBox("Le classeur a été envoyé..!", , "Action de la messagerie")
' Action si réponse NON de la boite de message
Else
' Boite de message
rep = MsgBox("Le classeur n'a pas été envoyé..!", , "Action de la messagerie")
End If
End Sub
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

voir ci dessous!

Sub SupprLiaisons()
Dim ListLiens, i as long
ListLiens = ActiveWorkbook.LinkSources
For i = LBound(ListLiens) To UBound(ListLiens)
ActiveWorkbook.BreakLink ListLiens(i), xlLinkTypeExcelLinks
Next i
End Sub

Private Sub CommandButton1_Click()


' Determination du nom
Dim nom As String
nom = Year(Date) - 1 & "_" & ActiveWorkbook.Name
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & nom
' Message confirmant la sauvegarde du classeur
rep = MsgBox("Votre classeur est sauvegardé sous le nom : " & nom, vbYes + vbInformation, "Copie sauvegarde classeur")


call SupprLiaisons
activeworkbook.save

' Boite de message
If MsgBox("Voulez vous envoyer le classeur..??", vbYesNo, "Demande de confirmation") = vbYes Then
' Action si réponse OUI de la boite de message
' Ouverture de la fenêtre de messagerie
Application.Dialogs(xlDialogSendMail).Show
' Boite de message
rep = MsgBox("Le classeur a été envoyé..!", , "Action de la messagerie")
' Action si réponse NON de la boite de message
Else
' Boite de message
rep = MsgBox("Le classeur n'a pas été envoyé..!", , "Action de la messagerie")
End If
End Sub

ça bug sur "ActiveWorkbook.BreakLink ListLiens(i), xlLinkTypeExcelLinks" lors de l execution du code (à l'appel de la macro)
Mais en ce moment je teste avec une version Excel97 ..(une partie de mes utilisateurs à cette version..eh oui ça date!!!.) là est peut être le problème
 
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

tototiti 2008, qu'en penses tu?
je viens de tester sous 2003 et ça le fait.
Ca bugge par contre si il n'y a pas de liaisons dans le fichier.
Si tu ne t'en sorts pas il faudra faire avec la méthode du copier coller valeur que je t'avais proposée...
 
Dernière édition:
Re : Enregistrement d'une copie de sauvegarde sans les liaisons

J'ai testé la macro directement en la lançant , et j'ai le même bug sur la ligne
"ActiveWorkbook.BreakLink ListLiens(i), xlLinkTypeExcelLinks"
Je vais voir sur Excel 2003 ou 2007 ce que cela donne mais je pense qu'en 97 ça ne peut pas fonctionnner
 
- 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

  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
384
Retour