Copier/coller fichier excel

Signaler
Messages postés
4
Date d'inscription
vendredi 9 juillet 2010
Statut
Membre
Dernière intervention
23 juillet 2010
-
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
-
Bonjour à tous,

Je souhaite copier coller un fichier se mettant à jour en temps réel (il est relié à un outil d'information financière) tous les jours à heure fixe.
Pour cela, je vais utiliser le planificateur de taches windows qui va me lancer un programme (voir ci-dessous) automatiquement.

Le problème, c'est que ce programme me copie/colle les valeurs des cellules, mais aussi les formules, donc le fichier créé se met lui aussi à jour en temps réel, ce que je ne veux pas.

"
Dim FichierSource, FichierDest, DateFichier, objFSO


FichierSource = "C:\portefeuille\classeur1.xlsm"
FichierDest = "C:\portefeuille\classeur2.xls"

DateFichier = FormatDate(Date(), "_" )

Set objFSO = CreateObject("Scripting.FileSystemObject" )
objFSO.Copyfile FichierSource, FichierDest & "Portefeuille" & " " & DateFichier & ".xls"

Function FormatDate(ValDate, Caractere)

Dim MoisDate, JourDate

ValDate = CDate(ValDate)

Caractere = CStr(Caractere)

MoisDate = Month(ValDate)
JourDate = Day(ValDate)

FormatDate = CStr(Year(ValDate)) & Caractere

If MoisDate < 10 Then
FormatDate = FormatDate & "0"
End If

FormatDate = FormatDate & CStr(MoisDate) & Caractere

If JourDate < 10 Then
FormatDate = FormatDate & "0"
End If

FormatDate = FormatDate & CStr(JourDate)

End Function
"

Comment insérer dans ce programme une formule qui permet de copier seulement les cellules du fichier excel source ???

D'avance merci.

1 réponse

Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Une première idée serait :

1) Ouvrir le fichier source à l'aide d'un objet "Excel.Application"

2) Faire une copie en faisant un
monWorkbook.SaveAs FichierDest
(A ce moment la monWorkbook pointe vers le classeur copie)

3) Parcourir la collection d'onglets de monWorkbook et faire
maWorkSheet.Cells.Copy
maWorkSheet.Cells.PasteSpecial Paste:=-4163, Operation:=-4142, SkipBlanks:=False, Transpose:=False
pour transformer les formules en valeurs

4) Sauvegarder les modifications du classeur copie
monWorkbook.Save


C'est sur que c'est plus lourd et que parfois la copie est problématique lorsque l'onglet a des fusions de cellules dans tous les sens, mais ca peut sauver.

Il faut par contre bien gérer son objet "Excel.Application" pour ne pas se retrouver avec 50 processus Excel lancés.