Sauvegarde Classeur mais sans formule

Résolu/Fermé
CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022
- 31 mai 2016 à 14:30
CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022
- 7 juin 2016 à 10:51
Bonjour,

Grâce à ce forum j'ai un code qui me permet de sauvegarder un classeur xlsm
en xlsx avec la date et l heure ( le chemin et le nom étant indiqués dans des cellules nommées).

Par contre, j'ai un soucis lié à l'utilisation , la sauvegarde se réalise avec les formules.
Il me faudrait la même chose mais avec une sauvegarde sans formule, chaque onglet du classeur copier coller valeur.

Voici le code

Sub Sauvegarde_sur_ordre()
Dim chemin As String
Dim fichier As String
Dim nom As String
nom = ThisWorkbook.FullName
chemin = Range("Chemin").Text

fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & "hh""h""mm") & " " & "" & ".xlsx"


Application.DisplayAlerts = False
ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook
ActiveWorkbook.SaveAs nom, FileFormat:=xlOpenXMLWorkbookMacroEnabled

Application.DisplayAlerts = True

End Sub

Par avance merci de votre aide



1 réponse

Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
55
Modifié par Kuartz le 1/06/2016 à 13:45
Bonjour,

Vous pouvez rajouter le copier / coller dans le code avant de sauvegarder comme ceci :

Sub Sauvegarde_sur_ordre() 
Dim chemin As String 
Dim fichier As String 
Dim nom As String 
Dim i As Integer

nom = ThisWorkbook.FullName 
chemin = Range("Chemin").Text 

fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & "hh""h""mm") & " " & "" & ".xlsx" 

For i = 1 To ThisWorkbook.Sheets.Count

Sheets(i).Cells.Copy
Sheets(i).Cells.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Next i


Application.DisplayAlerts = False
ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook 
ActiveWorkbook.SaveAs nom, FileFormat:=xlOpenXMLWorkbookMacroEnabled 

Application.DisplayAlerts = True 

End Sub 



En espérant avoir pu vous aider...

Cordialement.
1
CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022
1
1 juin 2016 à 13:54
Bonjour et merci,

Je viens d'essayer et le soucis c'est que le copier coller valeur s'effectue sur le classeur source.
J'aimerais que le classeur source ne bouge pas car c'est celui sur lequel je travaille régulièrement,
par contre je souhaite que le second fichier (sauvegarde) s'effectue en format xlsx pour supprimer la macro et en copier coller valeur.


Cdt
0
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
55 > CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022

Modifié par Kuartz le 1/06/2016 à 15:10
Pardon, je n'avais pas compris.

Dans ce cas, il suffit de changer de place ma partie de code :

Sub Sauvegarde_sur_ordre() 
Dim chemin As String 
Dim fichier As String 
Dim nom As String 
Dim i As Integer

nom = ThisWorkbook.FullName 
chemin = Range("Chemin").Text 

fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & "hh""h""mm") & " " & "" & ".xlsx" 

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook 
ActiveWorkbook.SaveAs nom, FileFormat:=xlOpenXMLWorkbookMacroEnabled 

For i = 1 To ActiveWorkbook.Sheets.Count

Sheets(i).Cells.Copy
Sheets(i).Cells.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Next i

ActiveWorkbook.Save

Application.DisplayAlerts = True 

End Sub 
0
CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022
1 > Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

1 juin 2016 à 15:20
Je viens d'essayer,

Le copier valeur s'effectue sur le classeur source

et le classeur cible conserve les formules

C'est exactement le contraire.

Il me semble que la difficulté réside dans le fait que le classeur source est toujours considéré comme "ActiveWorkbook"
0
Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
55 > CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022

2 juin 2016 à 10:12
Dans ce cas :

Sub Sauvegarde_sur_ordre() 
Dim chemin As String 
Dim fichier As String 
Dim nom As String 
Dim i As Integer

nom = ThisWorkbook.FullName 
chemin = Range("Chemin").Text 

fichier = Range("Nom_Classeur").Text & " " & "le" & " " & Format(Now, "dd-mm-yyyy" & " à " & "hh""h""mm") & " " & "" & ".xlsx" 

Application.DisplayAlerts = False
ActiveWorkbook.SaveAs chemin & fichier, FileFormat:=xlOpenXMLWorkbook 
ActiveWorkbook.SaveAs nom, FileFormat:=xlOpenXMLWorkbookMacroEnabled 

For i = 1 To Workbooks(chemin & fichier).Sheets.Count

Workbooks(chemin & fichier).Sheets(i).Cells.Copy
Workbooks(chemin & fichier).Sheets(i).Cells.PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

Next i

Workbooks(chemin & fichier).Save

Application.DisplayAlerts = True 

End Sub 
0
CHARLYJACK
Messages postés
349
Date d'inscription
mardi 19 octobre 2010
Statut
Membre
Dernière intervention
29 mars 2022
1 > Kuartz
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

2 juin 2016 à 10:38
Bonjour Kuartz,
merci de ce retour

j'ai un message d'erreur "l indice n'appartient pas à la selection"
sur cette ligne

For i = 1 To Workbooks(chemin & fichier).Sheets.Count
0