Macro enregistre feuille avec format et valeur dans nouveau classeur

rico83600

XLDnaute Occasionnel
Bonjour,

J'ai un classeur (calcul.xls) qui contient de nombreux calculs et en entrant des parametres, il me donne des résultats (une simple feuille de calcul quoi^^).

J'aimerais crée un bouton qui, lorsque je click dessus, m'enregistre cette feuille dans le classeur qui se trouve dans le même dossier et se prénomant sauvegarde.xls. Il faudrait par contre que cette sauvegarde se fasse sans conserver le calcul, mais en prenant directement les valeurs et formats des nombres (il y a aussi des graph dans cette feuille).

Je ne m'y connais vraiment pas assez en VBA pour le faire seul, par contre j'arriverais probablement a adapter pour mon cas ce que vous me proposerez.

Merci d'avance.
 

job75

XLDnaute Barbatruc
Re : Macro enregistre feuille avec format et valeur dans nouveau classeur

Rebonjour rico83600,

Affectez cette macro au bouton :

Code:
Sub SauvegardeValeurs()
Dim nom As String
nom = ThisWorkbook.Name 'normalement "calcul.xls"
ThisWorkbook.Save 'enregistre les modifications éventuelles
Application.DisplayAlerts = False
ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & "sauvegarde.xls"
ActiveSheet.UsedRange = ActiveSheet.UsedRange.Value 'supprime les formules
ThisWorkbook.Save 'enregistre encore
'---2 lignes facultatives---
Workbooks.Open ThisWorkbook.Path & "\" & nom 'rouvre "calcul.xs"
ThisWorkbook.Close 'ferme "sauvegarde.xls"
End Sub
La macro peut être placée n'importe où.

Noter que seules les formules de la feuille active sont supprimées.

A+
 

Papou-net

XLDnaute Barbatruc
Re : Macro enregistre feuille avec format et valeur dans nouveau classeur

Bonjour rico83600,

Exemple de macro attachée à ton bouton :

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
NbF = Workbooks("sauvegarde.xls").Sheets.Count
Sheets("Feuil1").Copy After:=Workbooks("sauvegarde.xls").Sheets(NbF)
With Workbooks("sauvegarde.xls").Sheets(Sheets.Count)
  For Each cel In .Cells.SpecialCells(xlCellTypeFormulas)
    cel.Formula = cel.Value
  Next
  .Shapes("CommandButton1").Delete
End With
Application.ScreenUpdating = True
End Sub

Dans ce cas de figure, il faut que ton fichier "sauvegarde.xls" soit ouvert.

Espérant avoir répondu.

Cordialement.

Edit : bonjour job75
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2