Macro : auvegarde dans le même classeur une feuille via un bouton

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

lis3

XLDnaute Nouveau
Bonjour,

Je débute en vba et je viens de passer la journée à chercher une solution à mon problème mais je vais finalement devoir solliciter votre aide

Voici mon problème :

J'ai créé un bouton qui permet de "sauvegarder" (plus exactement copier) l'onglet choisi et qui demande à l'utilisateur le nom qu'il veut donner à son nouvel onglet.
Jusque là, ça fonctionne.
le problème est que l'onglet que je souhaite sauvegarder (Feuil1) à des valeurs qui dépendent de la Feuil2. Et moi je voudrais que, une fois sauvegardé, la sauvegarde de la Feuil1 ne dépende plus de la Feuil2.
c'est à dire que je puisse changer les valeurs dans la Feuil2 sans que cela change les valeurs dans la sauvegarde mais que cela change les valeurs dans la Feuil1.

J'ai mis en pièce joint un fichier pour illustrer mon souci :
Une fois la Feuil1 sauvée, si je change des valeurs dans le Tableau A (Qui se trouve Feuil2), il y a à la fois les données de la Feuil1 qui sont modifiées et celle de ma sauvegarde.
Donc ma sauvegarde n'est plus une sauvegarde mais juste une copie ce que je ne souhaite pas.

En espérant avoir été clair sur mon problème.
Merci d'avance
 

Pièces jointes

Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Bonjour,

pas ouvert ton fichier, mais regarde ci-dessous code pour supprimer les liens du classeur actif :
Code:
Option Explicit
Sub test()
Dim t() As Variant, i As Integer
With ActiveWorkbook
    t = .LinkSources(1)
    For i = LBound(t) To UBound(t)
        .BreakLink t(i), 1
    Next i
End With
End Sub

A noter que l'on peut également faire un copier / collage spécial...

bonne soirée
@+
 
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Bonjour
Le plus simple c'est de rajouter:
VB:
ActiveSheet.Cells.Value = Feuil1.Cells.Value
À supposer que la nouvelle feuille créée soit bien active.
À+
 
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

A noter qu'ainsi les formats de cellules sont perdus...
Eh, non ! pas si la feuille résulte d'un Déplacer la feuille avec création d'une copie, voyons.
Pour figer les valeurs on peut d'ailleurs aussi faire:
VB:
ActiveSheet.Cells.Value = ActiveSheet.Cells.Value
Bonne soirée
À+
 
Dernière édition:
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Bonjour paspat,

Dans ce que tu as fais, tu as enlevé le lien entre la Feuil1 et la Feuil2. (les valeurs du tableau de la Feuil1 doivent être égale à celles du tableau A de la Feuil2)
Et dans ce que tu m'as envoyé, il n'y a plus de {cellule C2 Feuil1=Feuil2!B4}

J'espère que je suis clair
 
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Bonjour Pierrot93 et Dranreb,

Vos deux solutions fonctionnent. Mais cela prend un temps certain pour créer mon nouvel onglet d'ou ma nouvelle question :

Est ce possible d'accélérer le temps pour sauvegarder? en appliquant "ActiveSheet.Cells.Value = ActiveSheet.Cells.Value" mais qu'a certaine cellule et pas a toute la feuille ce qui permettrait de sauvegarder plus vite

Merci à vous
 
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Bonjour,

peut être avec ceci :
Code:
'début de procédure
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
'ton code

'fin de procédure
With Application
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With
tu peux également de la même façon interrompre les procédures événementielles le cas échéant (Application.EnableEvents)

ensuite à voir, selon le code que tu as utilisé...

@+
 
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Oula je débute en vba, ce n'est que ma 2nd macro : "Application.EnableEvents" je n'ai pas compris

Le code que tu viens de me donner ralentit encore plus la procédure (plus de 2min pour créer mon nouvel onglet)

Je n'ai besoin que "ActiveSheet.Cells.Value = ActiveSheet.Cells.Value" n'agisse que sur un tableau de 10 valeurs par sur toute la feuille

Mon code est le suivant :


Private Sub CommandButton1_Click()
Dim Faute As Long
If Me.TextBox1 = "" Then Exit Sub
On Error Resume Next
Sheets(Me.TextBox1.Text).Visible = True
Faute = Err.Number
On Error GoTo 0
If Faute > 0 Then
Sheets("Feuil1").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Cells.Value = ActiveSheet.Cells.Value
ActiveSheet.Name = Me.TextBox1
Else
MsgBox "Feuille existante"
End If
Unload Me
End Sub
 

Pièces jointes

Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Re,
remplace la copie des cellules par uniquement celles qui sont concernées...
Code:
Range("C8:H8,C10").Value = Range("C8:H8,C10").Value

Oula je débute en vba, ce n'est que ma 2nd macro : "Application.EnableEvents" je n'ai pas compris
dans l'éditeur vba, curseur positionné sur un mot et touche de fonction F1 te donne ra plein d'info...
 
Re : Macro : auvegarde dans le même classeur une feuille via un bouton

Je pensais à un truc comme ça :

ActiveSheet.Cells.Range("C8:H11").Value = ActiveSheet.Cells.Range("C8:H11").Value

Pour ne copier que quelques cellule j'ai fais ceci mais sans résultat :

Private Sub CommandButton1_Click()
Dim Faute As Long
If Me.TextBox1 = "" Then Exit Sub
On Error Resume Next
Sheets(Me.TextBox1.Text).Visible = True
Faute = Err.Number
On Error GoTo 0
If Faute > 0 Then
Sheets("Feuil1").Range("C8:H8,C10").Value.Copy after:=Sheets(Sheets.Count)
ActiveSheet.Cells.Value = ActiveSheet.Cells.Value
ActiveSheet.Name = Me.TextBox1
Else
MsgBox "Feuille existante"
End If
End Sub
 
- 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

Discussions similaires

Réponses
4
Affichages
221
  • Question Question
Microsoft 365 affichage userform
Réponses
4
Affichages
418
Retour