[Résolu] Macro pour copier un fichier excel avec les résultats des formules

brunolsl

XLDnaute Nouveau
Bonjour a tous !

J'ai un petit soucis pour créer ma macro.
Je cherche à sauvegarder un fichier excel contenant des tableaux, mises en pages, et formules (des dates et des noms provenant d'un autre tableau).

J'ai réussi a faire la copie, mais en gardant les formules, du coup, si l'on veut consulter un ancien fichier, on perd la date et les noms.
J'ai tester un "PasteSpecial" avec "XlPasteValues" seulement, je perd tous mes tableaux, couleurs, format de dates, etc...

Le but serait donc de recopier tout a l'identique, sauf quelques cellules ou il faut copier uniquement le résultat des formules.

Je vous montre mon code, récupéré et bidouillé du net :

Code:
Sub sauvegarde()

Application.ScreenUpdating = False

Dim Nomfichier, Chemin As String, Source As Range, Desti As Range, Desti2

Chemin = "C:\.......\Desktop\sauvegarde\"
'le fichier à sauvegarder étant sur le bureau

NomFichier = "Sauvegarde du " & Format(Date, "dd-mm-yy") & ".xls"

Set Source = ThisWorkbook.Sheets("Svg 1").Columns("A:O")

Workbook.Add -4167
'Création d'un feuillet temporaire ?
Set Desti = ActiveWorkbook.Sheets("Save1").Columns("A:O")

Source.Copy Desti

ActiveWorkbook.SaveAs Chemin & Nomfichier

'Jusqu'ici la macro marche, mais copie les fameuses formules, ou il me faut juste les résultats.
'Je n'ai pas réussis a intégrer la conversion des formules dans cette copie, la suite -tente- de copier a part les cellules avec formule.

Workbooks.Open (Chemin & NomFichier)

ThisWorkbook.Sheets("Svg 1").Range("D3:G3").Copy
'Il s'agit en fait de cellules Fusionnées
'j'ai tenter de faire un :
'ThisWorkbook.Sheets("Svg 1").Range("D3:G3", "E5", "D7:G7", "A10:D10", "E10").Copy
'Mais sans succès.

Set Desti2 = Workbooks(Chemin & NomFichier).Sheets("Save1").Range("D3:G3)
'C'est ici que ma macro bloque à priori, je pense que le type de Desti2 pose problème...

Desti2.PasteSpecial Paste := XlPasteValues

Workbooks.Close (Chemin & NomFichier)

Application.ScreenUpdating = True

End Sub

Voila ! Sa fait surement très usine à gaz mais bon !
Je vais retenter de modifier certaines choses, sait t'on jamais !

D'avance merci beaucoup !

Edit : balises couleurs dans le code
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Macro pour copier un fichier excel avec les résultats des formules

Bonjour brunolsl, peut être comme ça._Le code est dans le code la feuille "Feuil4")__La prochaine foi mets un fichier exemple, c'est plus simple pour les tests...__Cordialement
 

Pièces jointes

  • brunolsl(1).xls
    27.5 KB · Affichages: 109

brunolsl

XLDnaute Nouveau
Re : Macro pour copier un fichier excel avec les résultats des formules

Merci pour cette réponse rapide !

Je vais essayer d'intégrer ça au code, j'essairai de mettre un fichier similaire si il y a encore un souçis (je ne peux pas mettre l'original sur le net, pour des histoires de sécurités).

Je ne comprend pas trop le "Cells(1, 1).PasteSpecial....."
J'imagine que la fonction copie tout normalement. Puis recherche certaines cellules ou elle colle les valeurs ?

Bref je vais utiliser sa et je reposterait les résultats :)

Merci encore.
 

Efgé

XLDnaute Barbatruc
Re : Macro pour copier un fichier excel avec les résultats des formules

Re_Cells(1,1) est la même chose que Range("A1")__le PasteSpecial Paste:=xlPasteValues_fait un Collage spécial / Valeur__Cela a pour effet "d'écraser" les formules en les remplaçants par leurs valeurs__Cordialement
 

brunolsl

XLDnaute Nouveau
Re : Macro pour copier un fichier excel avec les résultats des formules

D'accord, ben je viens d'essayer la macro telle quelle, et sa marche !

Je comprenais pas car j'avais déjà utiliser un

Code:
Source.Copy
Desti.PasteSpecial Paste :=XlPasteValues

et sa m'enlevais toute la mise en page, les formats de date, etc...
Le type de variable "As Range" peut être.

Enfin merci beaucoup !
 

Efgé

XLDnaute Barbatruc
Re : [Résolu] Macro pour copier un fichier excel avec les résultats des formules

Re_le problème était que tu colais les valeurs tout de suite__Il faut d'abord coller tout puis uniquement les valeurs__Donc 1) Copy__2 ) Paste__3) pasteSpécial__Dans mon exemple il n'y a pas de paste car je prend toute la feuille pour créer le nouveau classeur, il n'y a plus qu'a écraser les formules._Cordialement
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh