deltalpha62
Messages postés19Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention26 juin 2009
-
25 juin 2009 à 16:38
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
27 juin 2009 à 00:43
Bonjour,
Tout d'abord je vais vous expliquer rapidement le contexte : je souhaite qu'une feuille précise (la premiere du classeur excel) soit imprimée à 9h et ce automatiquement.
J'ai donc pondu le code suivant :
Option Explicit
Private MyBk As Excel.Application
Dim MyBox As Integer
Private Sub tmrHorloge_Timer()
If (Time = "09:00:00") Then 'A cet endroit, fixer l'heure désirée
'IMPRESSION BILAN
Set MyBk = Workbooks.Open(FileName:="C:\....\Classeur1.xls")
MyBk.PrintOut
End If
End Sub
Mon test sur l'heure fonctionne, mais la procédure interne ne fonctionne pas rien ne s'imprime (je n'ai pas traité le problème de la premiere page à imprimer seulement, mais ça normal car je ne sais pas faire...)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juin 2009 à 16:59
Salut
Comme expliqué dans l'aide VB6 à propos des objets Excel, une Application est une Application, un WorkBook est un Workbook.
Là, tu dimensionnes une Application et tu lui charges un WorkBook !
Il faut créer 2 objects
Déclarer proprement le premier
Set xlApp = New Excel.Application
Puis le second
Set MyBk = xlApp.Open(...
Charge une source VB6 qui parle de Excel, tu sauras tout.
Teste ton application sans Timer avant de l'utiliser cycliquement.
Voir aussi la commande API "ShellExecute" en lui donnant la ligne de commande système :
Déclaration :
Private Const SW_SHOWNORMAL As Long = &H1
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
deltalpha62
Messages postés19Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention26 juin 2009 25 juin 2009 à 17:35
Merci pour l'information elle m'a été utile !
Maintenant il me dit : "L'objet ne gère pas cette propriété ou cette méthode" en mettant en surbrillance :
Set MyBk = xlApp.Open(FileName:="C:\Documents and Settings\ghayenne\Bureau\horloge\Classeur1.xls")
Le MyBk a pourtant été déclaré comme suivant : Private MyBk As Excel.WorkBook
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 25 juin 2009 à 17:48
Oui, donc tu as essayé sans regardé l'aide ou des exemples ....
Il manquait (involontaire) la déclaration de
Dim MyBk As Excel.WorkSheet
Si la fonction Open ne marche pas comme ça, essaye
xlApp.Workbooks.Open FileName:=...
Set MyBk = xlApp.Worksheets(1)
MyBk.Select
deltalpha62
Messages postés19Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention26 juin 2009 26 juin 2009 à 09:11
Bonjour,
Merci pour ces réponses le tout fonctionne correctement !
J'ai bien compris le principe de selection de la feuille à imprimer avec Set MyBk = xlApp.Worksheets(2) (car ma feuille à imprimer est la seconde dans le classeur).
Mais en fait ce que je voulais c'est imprimer la première page de cette feuille : la deuxieme FEUILLE de mon classeur s'étend sur 4 pages lors de l'impression, y-a-t-il une astuce pour n'imprimer que celle ci ?
Merci
ps : en ce qui concerne l'aide, j'ai bien essayé sur MSDN mais je n'ai rien trouvé
Vous n’avez pas trouvé la réponse que vous recherchez ?
deltalpha62
Messages postés19Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention26 juin 2009 26 juin 2009 à 09:44
C'est bon !
Après quelques cafouillages et quelques bidouilles, voila ce à quoi je suis parvenu :
Private Sub tmrHorloge_Timer()
If (Time = "09:00:00") Then 'A cet endroit, fixer l'heure desiree
'IMPRESSION BILAN
Set xlApp = New Excel.Application
xlApp.Workbooks.Open FileName:="C:\Documents and Settings\...\JUIN_09.xls" 'Définition du chemin de fichier
Set MyBk = xlApp.Worksheets("BILAN") 'On déclare le numéro 2 car la feuille à imprimer (BILAN) est la deuxième feuille du fichier
MyBk.Select
MyBk.Range("A1:S42").PrintOut 'Selection des cellules a imprimer : je n'ai pas trouvé de commande pour imprimer QUE la premiere page
End If
End Sub
En tout cas merci pour votre aide !
En espérant que ça servira à un désespéré !