Bonjour,
Sub SauverSheets()
Dim fichier$, ws As Worksheet
With ThisWorkbook
For Each ws In .Worksheets
ws.UsedRange.Value = ws.UsedRange.Value
Next ws
fichier = .Path & "\X" & .Name
fichier = Replace(fichier, "xlsm", "xlsx")
Application.DisplayAlerts = False
.SaveAs fichier, xlOpenXMLWorkbook
.Close
End With
End Sub
Voilà pour débarrasser ton classeur de formules. Les formats et mises en forme seront conservés.
[NB- méthode propre à VBA, très nettement plus rapide qu'un copier-coller valeurs !]
Pour revenir à la question du format, pas de problème si tu opères toujours avec la même version d'Excel.
L'extension n'est pas en soi un souci, mais il faut qu'elle soit en adéquation avec le format d'enregistrement (sans quoi tu auras le message d'alerte d'anomalie).
Si tu opères avec Excel 2007 ou postérieur, le format choisi (avec extension .xlsx), fonctionnera sans problème. Par contre, si tu dois conserver une extension .xls (et un format antérieur : xlExcel8) parce que tu es susceptible d'opérer avec une version antérieure, il convient de vérifier si l'indication du format est bien reconnue dans cette version antérieure (la constante de format concernée pouvait ne pas encore avoir été créée lors de l'édition de la version...) et à ce moment il faut l'indiquer sous une forme reconnue par la version utilisée, ce qui peut impliquer si tu passes d'une version à une autre de tester la version dans le code pour adapter l'indication de format...
Cordialement.