Copier/coller fichier excel

owlvba Messages postés 4 Date d'inscription vendredi 9 juillet 2010 Statut Membre Dernière intervention 23 juillet 2010 - 23 juil. 2010 à 17:51
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 - 23 juil. 2010 à 18:38
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

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
23 juil. 2010 à 18:38
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.
0
Rejoignez-nous