Macro enregistrer sous, une seul feuil du fichier

pias

XLDnaute Nouveau
Bonjour, le forum

Dans un fichier avec plusieurs Feuils est-ce qu’il est possible de faire une macro que permet d’enregistrer sous, mais pas tout le fichier, mais une seule feuille du fichier ?
Exemple dans un fichier A avec 20 Feuils enregistrer sous seulement la Feuil 1, mais tout en sauvegardent le fichier A intacte .
J’espère que vous allez comprendre la question !
Merci d’avance
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Pias, le Forum

Tiens il y a un moment que je ne t'avais pas croisé dans un Fil Pias.

Tu as de la chance j'au juste un démo sour la mains, enfin sous la souris !!!

=> Démo Téléchargeable Lien supprimé


=> Fil de Discussion explicatif Lien supprimé

Et dans ce fil tu as aussi d'autres trucs

=> Fil de Discussion Lien supprimé


Bonne Soirée Pias, le Forum
@+Thierry
Lien supprimé
 

pias

XLDnaute Nouveau
Bonsoir, Thierry et le Forum

Effectivement ça faisait un petite moment que on ne se croisé pas dans un fil, mais je lis régulièrement tes post et je suis toujours très attentif à tes démos.
Merci pour ta réponse comme d’habitude c’est impeccable.

Bonne soirée
 

pias

XLDnaute Nouveau
Rebonsoir, Thierry et le Forum
Juste pour curiosité avant de poser ma question j’avais fait une recherche dans les anciens poste et je suis tombé sur ce post :
<Lien supprimé
Dans lequel myDearFriend avais donner le code suivant :


Private Sub btnSauv_Click()
Application.Dialogs(xlDialogSaveAs).Show CStr(ThisWorkbook.ActiveSheet.Range('B2').Value)
End Sub

&Ccedil;a fonctionne très bien mais avec le feuil active, j’ai voulus modifier le code pour copier une feuil précise ( Feuil2 ) dans le fichier mais j’ai pas réussi !

Sub btnSauv_Click()
Application.Dialogs(xlDialogSaveAs).Show CStr(Sheets ('Feuil2').Select.Range('B2').Value)
End Sub

Est-ce que quelqu’un peut me dire se qu’il y a de faux ?

Merci
 

pias

XLDnaute Nouveau
Bonsoir,

Mais se que suis C…
Bon Ok merci Thierry et Didier.
Alors juste pour le Fun, puisque la Démo de Thierry me convient mais j’aimerais juste savoir encore une chose si possible !

Sub btnSauv_Click()
Application.Dialogs(xlDialogSaveAs).Show CStr(Sheets ('Feuil2').Range('B2').Value)
End Sub
Copie toutes les Feuils du classeur !
Que faut-t-il ajouter à ce bout de code pour qu’il copie uniquement la Feuil2 ?

S’il y a pas de solution c’est pas grave, c’est juste pour satisfaire mas curiosité !

Bonne nuit
 

pias

XLDnaute Nouveau
Bonsoir, Thierry, Didier et le Forum

Sans vouloir pousser le bouchon trop loin, et toujours dans la curiosité. J’ai une encore une question dans le fil que peut intéresser pas mal de monde.

Sub btnSauv_Click()
Sheets('Feuil2').Copy
Application.Dialogs(xlDialogSaveAs).Show CStr(Sheets('Feuil2').Range('B2').Value)
End Sub

Supposons que la Feuil2 en question contient des liaisons avec d’autres feuilles du classeur.

Lorsque on ouvrira la copie de Feuil2, la boite avec le message 'Le classeur que vous avez ouvert comporte de liaisons avec un autre classeur…. Etc.'vas venir a l’écran.

J’ai donnés un coup d’œil sur le sujet et c’est vrais qu’il y a plusieurs manières de contourner le problème de la boite.

Mais ma question est de savoir s’il y a un moyen d’ajouter un bout de code à la macro de Didier ici dessus, de manière à que lorsque on ouvriras le fichier copier la boite ne vienne pas à l’écran.

A+
 

myDearFriend!

XLDnaute Barbatruc
Bonsoir pias,

Pour répondre à ta question, je vois au moins 4 façons de faire (voir Méthodes ci-dessous) :
Sub btnSauv_Click()
      'Creer le nouveau classeur
      Sheets('Feuil2').Copy
      'Agir sur les liens
      MethodeX                                          'X à choisir entre Methode1, 2, 3 ou 4
      'Sauvegarder le nouveau classeur
      Application.Dialogs(xlDialogSaveAs).Show CStr(Sheets('Feuil2').Range('B2').Value)
End Sub
___________________________________________________________________________

Sub Methode1()
'Supprimer les liens en faisant copie et collage spécial valeur
      With ActiveSheet.Cells
            .Copy
            .PasteSpecial Paste:=xlPasteValues
      End With
End Sub


Sub Methode2()
'Rompre les liens par la méthode BreakLink
Dim Liens As Variant
Dim
L As Integer
'
Liens = ActiveWorkbook.LinkSources(Type:=xlLinkTypeExcelLinks)
If Not IsEmpty(Liens) Then
      For L = 1 To UBound(Liens)
            ActiveWorkbook.BreakLink Liens(L), Type:=xlExcelLinks
      Next L
End If
End Sub


Sub Methode3()
'Intervenir sur la mise à jour des liens : option NE PAS METTRE A JOUR les liens
'sans boîte de dialogue à l'ouverture du classeur
      ActiveWorkbook.UpdateLinks = xlUpdateLinksNever
End Sub

Sub Methode4()
'Intervenir sur la mise à jour des liens : option TOUJOURS METTRE A JOUR les liens
'sans boîte de dialogue à l'ouverture du classeur
      ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
End Sub
Cordialement.
 

pias

XLDnaute Nouveau
Bonsoir, Didier et le Forum

Oh là là, je ne m’attendez pas à tout ça.
C’est un vrais cours sur le sujet.
Franchement Didier c’est SUPER…
Au nom de tous ces que passeront par le poste et que d’une manière ou d’une autre vont bénéficier de tes explications je te dis un grand Merci.

Je te souhaite une très bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 423
Membres
103 206
dernier inscrit
diambote