VBA : enregistrer une feuille et supprimer les liaisons

Résolu/Fermé
Maud1681 Messages postés 14 Date d'inscription mercredi 8 février 2017 Statut Membre Dernière intervention 16 février 2017 - 13 févr. 2017 à 12:07
Maud1681 Messages postés 14 Date d'inscription mercredi 8 février 2017 Statut Membre Dernière intervention 16 février 2017 - 16 févr. 2017 à 09:04
Bonjour,
J'utilise le code ci-dessous pour copier une feuille d'un doc excel et l'enregistrer :
1) on clique sur le bouton
2) la feuille est copiée/enregistrée sous un nom et le bouton de la macro disparait
3) le doc source se ferme sans sauvegarde
Le doc source a des cellules dont le contenu est lié à une autre feuille du classeur.

Pb : la feuille copiée garde les liaisons que je voudrais supprimer... savez vous comment modifier mon code ?

Private Sub CommandButton4_Click()
'Macro : quand le fichier est complété, on clique sur le bouton 4, la feuille est copiée et Le fichier d'origine est effacé et fermé.
Dim nomfichier As String
Dim FileExtStr As String
Dim FileFormatNum As Long
ThisWorkbook.ActiveSheet.Copy
ActiveSheet.Shapes("CommandButton4").Visible = False
FileExtStr = ".xlsm": FileFormatNum = 52
ActiveSheet.SaveAs Filename:= _
"\\xxxxx\xxxx\xxx\xx\test\" & "test" & ".xls"
ThisWorkbook.Close SaveChanges:=False
End Sub

Vous remerciant d'avance
A voir également:

1 réponse

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 13/02/2017 à 14:13
Bonjour,

En passant par une feuille intermediaire, pas un classeur (
ThisWorkbook.ActiveSheet.Copy
), genera pas puisque vous fermez sans enregistrer

Private Sub CommandButton4_Click()
    'Macro : quand le fichier est complété, on clique sur le bouton 4, la feuille est copiée et Le fichier d'origine est effacé et fermé.
    Dim nomfichier As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    
    With ActiveSheet
        .Shapes("CommandButton4").Visible = False
        .Cells.Copy
    End With
    Sheets.Add After:=ActiveSheet
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveSheet.SaveAs Filename:="\\xxxxx\xxxx\xxx\xx\test\" & "test" & ".xls", FileFormat:=56
    ThisWorkbook.Close SaveChanges:=False
End Sub
0
Maud1681 Messages postés 14 Date d'inscription mercredi 8 février 2017 Statut Membre Dernière intervention 16 février 2017
13 févr. 2017 à 14:22
Bonjour,
J'ai appliqué ta méthode mais cela copie la feuille en supprimant les liaisons mais j'aimerais conserver la mise en forme et des boutons de macro qui doivent être actifs pour l'utilisateur suivant...
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701 > Maud1681 Messages postés 14 Date d'inscription mercredi 8 février 2017 Statut Membre Dernière intervention 16 février 2017
Modifié par f894009 le 13/02/2017 à 15:05
Re,

Ok, je regarde

suite:

Peut-etre le nom de feuille copiee a voir

Private Sub CommandButton4_Click()
    'Macro : quand le fichier est complété, on clique sur le bouton 4, la feuille est copiée et Le fichier d'origine est effacé et fermé.
    Dim nomfichier As String
    Dim FileExtStr As String
    Dim FileFormatNum As Long
    
    With ActiveSheet
        .Shapes("CommandButton4").Visible = False
        .Copy After:=ActiveSheet
    End With
    With ActiveSheet
        nom = .Name
        .Select
        .UsedRange.Copy
        .Range("A1").Select
    End With
        
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    'ActiveWorkbook.SaveAs Filename:="d:\_acsv\" & "essai_test_lien" & ".xls", FileFormat:=56
    ActiveSheet.SaveAs Filename:="\\xxxxx\xxxx\xxx\xx\test\" & "test" & ".xls", FileFormat:=56
    Sheets(nom).Copy
    ThisWorkbook.Close SaveChanges:=False
End Sub
0
Maud1681 Messages postés 14 Date d'inscription mercredi 8 février 2017 Statut Membre Dernière intervention 16 février 2017
13 févr. 2017 à 15:29
je check et te dis... merci.
0
Maud1681 Messages postés 14 Date d'inscription mercredi 8 février 2017 Statut Membre Dernière intervention 16 février 2017
16 févr. 2017 à 09:04
J'y suis finalement allée comme une barbare en faisant un copier/collage spécial des cellules qui avaient des liaisons :

Range("A35:C35").Select
Selection.Copy
Range("A35").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Merci beaucoup pour ton aide
0