Probleme excel VBA

deltalpha62 Messages postés 19 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 26 juin 2009 - 25 juin 2009 à 16:38
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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...)

Auriez vous une solution ??
Merci d'avance

Cordialement

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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

Utilisation :
   ShellExecute Me.hWnd, "Print", monCheminAvecFichier, vbNullString, monChemin, SW_SHOWNORMAL
   
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
deltalpha62 Messages postés 19 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 26 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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
0
deltalpha62 Messages postés 19 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 26 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é
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deltalpha62 Messages postés 19 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 26 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é !
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 juin 2009 à 00:43
Oui, ou bien tu enregistres une macro pendant que tu sélectionnes la zone et lance une impression de la deuxième page, et tu auras le code tout cuit
0
Rejoignez-nous