IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment imposer un ordre d’impression ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut Comment imposer un ordre d’impression ?
    Bonjour all,

    Voici deux jours que je joue avec les macros Excel.
    Je m’y suis intéressé car je veux automatiser une impression de document.

    Explication du projet

    Dans une feuille Excel j’ai une liste avec numéro de fiche, marque et type d’appareil …
    Une fiche est crée avec les données de cette liste, jusque là pas de macro

    Puis vient la macro que je crée, elle parcourt la liste, elle active la premier fiche, l’imprime, de cette fiche la macro en retire un chemin et un non de ficher PDF qu’elle imprime aussi puis passe à la suivante

    Le problème

    Je crois que la macro fonctionne bien mais mon problème se situe dans l’envoie vers l’imprimante.
    Les fichiers Excel sont beaucoup plus rapide à être traité, donc mon ordre imprimé est « feuilles d’entêtes puis les PDF »

    J’ai eu deux réactions à ce problème la première une MsgBox "coucou" fonctionne mais on oublier d’allé chercher ça tasse de café « mode automatique 0 »
    La dernière, une tempo, mais là on peut même allé chercher les croissants en plus

    Je ne sais pas si cela est réalisable, mais la solution serait de garder en mémoire les ordres d’impression et de les envoyées à la fin, mais comment faire ?




    Rappel : je suis novice tout frai de deux jours donc si vous avez des critiques constructives je suis preneur
    Voici mon code


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    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
    Const SW_SHOWNORMAL = 1
     
    Sub Imptout()
     
     Dim hwnd As Long
     Dim a As Variant
     Dim b As Variant
     Dim IMPRIMEPDF As Variant
     Dim Dossier As String
     Dim MARQUE As Variant
     
     
        For Each c In Sheets("Récapitulatif").Range("B:B")
            If c.Interior.ColorIndex = 3 Then
                c.Copy
        Sheets("FICHE").Select
        Range("B1").Select
        ActiveSheet.Paste
     
     
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
     
     
     
     MARQUE = Sheets("FICHE").Range("B17").Value
     On Error Resume Next
     Dossier = "\\Chemin faisant\sur le serveur  \" & MARQUE & "\" 'Chemin du dossier !
    'On Error Resume Next
     a = Sheets("FICHE").Range("B18").Value
     b = ".pdf"
     IMPRIMEPDF = a & b
    'On Error Resume Next
        ShellExecute hwnd, "print", Dossier & IMPRIMEPDF, "", "", SW_SHOWNORMAL ' A la place de "open", mettre "print" pour imprimer
    On Error GoTo 0
     
    Attente (5)
     
         Sheets("Récapitulatif").Select
     
            End If
     
     
         Next c
    End Sub
     
    Sub Attente(Attente As Integer)
    Dim Start, PauseTime
    PauseTime = 7 'Secondes d'attente
    Start = Timer
    Do While Timer < Start + PauseTime
    DoEvents
    Loop
    End Sub
    merci d'avance

    Mic

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour Mic,

    en regardant ton code, les questions que je me pose sont :

    elle parcourt la liste, elle active la premier fiche
    - qui a t'il comme information dans la colonne B, est ce que c'est des adresses comme (c:\rep\fichier.?) ?

    - que veut tu imprimer, le chemin du fichier, une plage du fichier ou bien un fichier fermé ?

    - et également pourquoi faire une boucle sur la colonne entiere ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Bonjour Isabelle,

    Ce que je veux imprimer, c’est une feuille d’entête et un fichier pfd
    La feuille d’entête est générée hors macro avec des formules Excel dans la feuille de calcul nommée « FICHE »
    Le fichier PDF lui ce trouve sur le réseau et la macro imprime tout

    Un petit dessin vaut mieux qu’un grand discourt


    Ceci dit la macro fonctionne très bien, c’est l’ordre dans l’imprimante qui me dérange

    Mic

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Oups

    Pour la boucle

    Je vais tenter de m’expliquer clairement (pas gagné )

    Pour imprimer une fiche je dois écrire dans la case « B1 » de la feuille « FICHE » le n° qui lui fait référence dans la feuille « récapitulatif » dans la colonne « B »
    Tout ceci sans aucune macro, donc je me suis dit « automatisons »

    Donc j’ai crée une boucle qui va lire les casses mises en couleur rouge dans la colonne « B » de la feuille récapitulatif et les transcrit dans la case « B1 » de la feuille « FICHE » imprime la fiche et passe à l’autre

    Quand tout a bien fonctionné, pourquoi s’arrêter, imprimons la fiche constructeur qui est au format « pdf »

    Le premier test fut en deux « SUB » un faisait appel à l’autre
    Fonctionne très bien, mais le problème est apparu, sortie papier les feuille d’entête son avant les pdf hors je veux une entête un pdf, une entête un pdf, ex…

    Le deuxième teste
    Je me suis dit « trop rapide »
    Le programme pour lire le pdf ne réagit pas assai vite et les informations venant de l’Excel qui lui est déjà ouvert, prennent le pas dans la liste d’attente de l’imprimante

    Donc bidouillage de code pour le ralentir mais rien n’y fait, sauf une pause soit manuel soit temporisée

    Pour moi la bonne idée est de classé soi-même les données dans la liste d’attente de l’imprimante

    Voilà

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/05/2006, 23h13
  2. [ADO.Net][C#] Comment imposer le format de date ?
    Par WELCOMSMAIL dans le forum Accès aux données
    Réponses: 3
    Dernier message: 03/05/2006, 20h21
  3. Réponses: 1
    Dernier message: 29/03/2006, 11h33
  4. comment imposer un format de date dans DB2?
    Par Mittou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/10/2005, 08h16
  5. [opengl] Comment eviter l'ordre de faces ?
    Par :GREG: dans le forum OpenGL
    Réponses: 3
    Dernier message: 02/03/2004, 19h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo