OVH Cloud OVH Cloud

Sauvegarde automatique sans les formules

7 réponses
Avatar
mboileau
Bonjour,

J'ai ce code dans un fichier excel:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
NomFich =3D "c:\TEMP\" & Day(Date) & Month(Date) & Year(Date) &
"=2Exls"
ActiveWorkbook.SaveCopyAs NomFich
End Sub


J'aimerais pouvoir sauvegarder seulement les valeurs de la feuille et
non les formules qu'il y a dans les cellules. Que dois-je rajouter =E0
ma macro pour cela?

Merci
MP

7 réponses

Avatar
Vincnet.
Bonjour,

Le plus simple est à mon avis de copier-coller par valeurs les plages de
cellules utilisées de chaque feuille. Comme ceci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
Dim Fich as Workbook
Dim Feuil As Worksheet
NomFich = "c:TEMP" & Day(Date) & Month(Date) & Year(Date) &
".xls"
ActiveWorkbook.SaveCopyAs NomFich
Set Fich = Application.Workbooks.Open(NomFich)
For Each Feuil In Fich
Feuil.UsedRange.Copy
Feuil.UsedRange.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next Feuil
Fich.Close SaveChanges:=True
End Sub

Cela dit, j'ai pas testé, il va peut-être te falloir débugger un bout du
machin...
--
A+

V.



Bonjour,

J'ai ce code dans un fichier excel:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
NomFich = "c:TEMP" & Day(Date) & Month(Date) & Year(Date) &
".xls"
ActiveWorkbook.SaveCopyAs NomFich
End Sub


J'aimerais pouvoir sauvegarder seulement les valeurs de la feuille et
non les formules qu'il y a dans les cellules. Que dois-je rajouter à
ma macro pour cela?

Merci
MP




Avatar
anonymousA
Bonjour,

Avant d'enregistrer le fichier tu fais

Sheets("Feuil1").UsedRange.Cells = Sheets("Feuil1").UsedRange.Cells.Value

si la feuille est la feuille Feuil1

Attention si le nombre de cellules est très important il vaut peut-être
mieux passer par la création d'une feuille temporaire puis un
copier-collage spécial puis la destruction de la feuille à copier puis
le renommage de la feuille temporaire avec le nom de la feuille copiée

A+

Bonjour,

J'ai ce code dans un fichier excel:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
NomFich = "c:TEMP" & Day(Date) & Month(Date) & Year(Date) &
".xls"
ActiveWorkbook.SaveCopyAs NomFich
End Sub


J'aimerais pouvoir sauvegarder seulement les valeurs de la feuille et
non les formules qu'il y a dans les cellules. Que dois-je rajouter à
ma macro pour cela?

Merci
MP



Avatar
mboileau
Salut ca ne fonctionne pas à partir de set Fich. Est-ce que tu peux
m'aider?

Merci
MP
Avatar
docm
Remplace
For Each Feuil In Fich
par
For Each Feuil In Fich.Worksheets

docm

wrote in message
news:

Salut ca ne fonctionne pas à partir de set Fich. Est-ce que tu peux
m'aider?

Merci
MP
Avatar
mboileau
Salut,

J'ai écrit mon code comme suit mais il y a 2 msgbox " voulez-vous
sauvegarder" qui m'apparait une après l'autre. Est-ce que tu
détectes l'erreur?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
Dim Feuil As Worksheet
Select Case MsgBox("Voulez-vous sauvegarder?", vbYesNoCancel)
Case vbYes
NomFich = "c:TEMP" & Format(Now(), "dd-mmm-yy") & ".xls"
For Each Feuil In Workbooks("test").Worksheets
Feuil.UsedRange.Copy
Feuil.UsedRange.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next Feuil
ThisWorkbook.SaveCopyAs NomFich
Workbooks("test").Close SaveChanges:úlse
Case vbNo
ThisWorkbook.Saved = True
Case vbCancel
Cancel = True
End Select


End Sub


Merci
MP
Avatar
docm
L'erreur vient de la commande
Workbooks("test").Close SaveChanges:úlse
qui provoque un nouvel événement Workbook_BeforeClose
non désiré.

Essaie avec ces modifications.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
Dim Feuil As Worksheet
Select Case MsgBox("Voulez-vous sauvegarder?", vbYesNoCancel)
Case vbYes
NomFich = "c:TEMP" & Format(Now(), "dd-mmm-yy") & ".xls"
'For Each Feuil In Workbooks("test").Worksheets
For Each Feuil In ThisWorkbook.Worksheets
Feuil.UsedRange.Copy
Feuil.UsedRange.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next Feuil
ThisWorkbook.SaveCopyAs NomFich
'Workbooks("test").Close SaveChanges:úlse
ThisWorkbook.Saved = True
Case vbNo
ThisWorkbook.Saved = True
Case vbCancel
Cancel = True
End Select
End Sub

docm

wrote in message
news:
Salut,

J'ai écrit mon code comme suit mais il y a 2 msgbox " voulez-vous
sauvegarder" qui m'apparait une après l'autre. Est-ce que tu
détectes l'erreur?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim NomFich As String
Dim Feuil As Worksheet
Select Case MsgBox("Voulez-vous sauvegarder?", vbYesNoCancel)
Case vbYes
NomFich = "c:TEMP" & Format(Now(), "dd-mmm-yy") & ".xls"
For Each Feuil In Workbooks("test").Worksheets
Feuil.UsedRange.Copy
Feuil.UsedRange.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Next Feuil
ThisWorkbook.SaveCopyAs NomFich
Workbooks("test").Close SaveChanges:úlse
Case vbNo
ThisWorkbook.Saved = True
Case vbCancel
Cancel = True
End Select


End Sub


Merci
MP
Avatar
mboileau
Merci ça fonctionne à merveille!