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 :

Impression impossible à annuler quand il est lancé


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut Impression impossible à annuler quand il est lancé
    Bonjour,

    Voila mon soucis, quand j'arrive à ce code pour le choix de l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.Dialogs(xlDialogPrint).Show = True
    ... je n'arrive plus à annulé l'impression ! Je clique sur annuler il imprime quand meme !!!

    Pouvez-vous m'expliquer pourquoi ?

    Merci d'avance

    bonne journée

    MaTT

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Explication : Ton imprimante a un buffer. Quand tu lances l'impression, le "buffer" (mémoire vive) se remplit à la limite de sa capacité. Si tu annules l'impression alors que la totalité du fichier d'impression est dans le buffer, l'imprimante finira son impression.
    Fais l'essai avec un fichier important, tu verras que l'impression s'interrompt effectivement après une ou deux pages.
    Dépend également de l'imprimante et de son driver, certaines imprimantes "acceptant" une fin de tâche buffer plein.
    Alors fais preuve de compréhension vis à vis de ta pauvre imprimante qui n'a pas ça

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    Je pense que ce n'est pas trop sa ... il doit exister un code permettant d'avoir les valeurs ANNULER et OK ...

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    C'est toi qui vois

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 28
    Par défaut
    je suis perdu, il faut que je trouve un moyen

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je n'ai rien trouvé en VBA Pas de reset, pas de clear sur l'objet ActivePrinter...) bref, en VBA, je ne sais pas.
    Par contre, si j'avais un impératif, je commencerais par chercher la séquence permettant d'interrompre l'impression sur la doc de l'imprimante (ctrl + ? ou Esc + ?...)
    Il est possible que les imprimantes "parallèles" actuelles aient toutes la même séquence et ça je ne le sais pas.
    Ensuite, je chercherais à savoir sur quel port se trouve l'imprimante dans le "Panneau de configuration" Lpt1, USB 1, 2 ...
    Puis, je créerais un fichier .Bat dont le code enverrait la séquence d'escape à l'imprimante par le port correspondant.
    Enfin, je mettrais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("cmd /c LeFichier.bat")
    Si tu trouves la doc de l'imprimante, on pourra "peut être" t'aider... Pour ma part, il y a tellement longtemps que je ne l'ai pas fait (jamais sur imprimante parallèle) qu'il me faudrait ressortir mon bouquin du dos et quelque temps pour retrouver)
    Bonne chance dans tes recherches
    A+

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Edit
    Pour un .bat, j'ai une adresse à te proposer.
    La commande dos "Print /c/p" que l'on utilisait n'est plus valide avec le pseudo dos XP
    J'ai posé la question sur le forum Dos (parce que la question m'intéresse) si j'ai une réponse, je te la mettrais. Mais rien ne t'empêche d'aller y jeter un oeil Pièce jointe 15206

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    Citation Envoyé par elfia
    Bonjour,

    Voila mon soucis, quand j'arrive à ce code pour le choix de l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Application.Dialogs(xlDialogPrint).Show = True
    ... je n'arrive plus à annulé l'impression ! Je clique sur annuler il imprime quand meme !!!

    Pouvez-vous m'expliquer pourquoi ?

    Merci d'avance

    bonne journée
    MaTT
    salut je pense que ce n'est pas lié a cette ligne, mais au reste de ta boucle if. et si tu nous la montrais?par exemple, si tu lui dis quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Application.Dialogs(xlDialogPrint).Show = True
    print
    else
    ne pas printer
    end if
    hé ben elle imprimera quelquesoit ce que tu tape dessus, puisque Show = True sera vrai. enfin, ce n'est qu'un avis rapide, je m'en sert jamais, mais c'est peut etre une piste

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non, l'imprimante, pour s'arrêter, a besoin d'un ordre direct. Ça passe par le driver d'impression. Or, tant qu'on n'a rien sur lui, (et d'ailleurs je ne saurais pas en quels termes ni en quelle langue m'adresser à lui) j'ai donc supposé qu'un ordre direct, commun à toutes les imprimantes, devaient répondre à ce problème. Malheureusement, avec XP et son foutu pseudo dos, cette commande commune, connue des seuls anciens qui ont encore leur bon vieu bouquin du dos, n'est plus accepté par le pseudo dos d'XP.
    Un autre pb se pose : L'imprimante est-elle en réseau ? Parce que si c'est bien ce que je crains, ma commande dos - - - -> Pièce jointe 15209

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    je vois ce que tu veux dire, mais je crois qu'on interprete pas le probleme de la même façon. comme je le vois, il fait apparaitre la boite d'impression, celle qui lui demande de confirmer genre imprimer oui/non, et même si il met non, la bete imprime quand même.
    Citation Envoyé par elfia
    If Application.Dialogs(xlDialogPrint).Show = True

    ... je n'arrive plus à annulé l'impression ! Je clique sur annuler il imprime quand meme !!!
    et dans le genre, j'ai essayé ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub imprim()
    If Application.Dialogs(xlDialogPrint).Show = True Then
    MsgBox "true"
    Else
    MsgBox "pas true"
    End If
    End Sub
    hé bien, j'obtiens "pas true queque soit le bouton sur lquel j'appuie. donc c'est lié a une mauvaise utilisation de la valeur renvoyé par la boite. mais là, je sais pas trop comment il faut faire

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Il me semble qu'elfia veut annuler l'impression, pas savoir si la boîte de dialogue est ouverte... mais je peux me tromper

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    bien sur, il veut annuler son impression, mais parce qu'elle part meme si il appuie sur annule. l'idéal pour lui est qu'elle ne se lance pas quand il lui dis non. en fait il doit etre dans le cas ou je suis avec ma petite boucle
    il a du faire qque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub imprim()
    If Application.Dialogs(xlDialogPrint).Show = True Then
    pas print
    Else
    print
    End If
    End Sub
    mais comme la boite renvoie une certaine valeur qui n'est ni true ni false, son impression part quand même
    Mais comment récuperer les valeur de sortie de cette boites?

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Si on peut faire
    If Application.Dialogs(xlDialogPrint).Show = True Then
    alors on peut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LaBoîte = Application.Dialogs(xlDialogPrint).Show
    ... mais je ne sais pas si on peut le faire

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    oui, j'ai déja essayé, le résultat est le même, en suite tu reviens sur
    mais le soucis, c'est égal quoi

  15. #15
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    bonjour à tous

    Il y une focalisation sur cette boite de dialogue, si elle est vraiement en cause, c'est windows qui est en cause

    Il serait souhaitable de faire un point d'arret à cet endroit (voire meme plus haut dans la macro) et faire pas à pas chaque ligne de la macro..........
    Recupérer les differentes valeurs : dialogs(...........).show renvoie un format de type boolean --- > True, False


    ps. laboite n'etant pas definie est de type variant donc prend automatiquement le type de variable affecté. Sinon la definir en type Boolean sinon ---> erreur 13 ---> Incompatibilité de type

    Bonne journée à tous

  16. #16
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu as essayé le mode d'arrêt dans une boîte de dialogue ? Moi pas mais je me doute
    D'après ce que dit aslimblad, il a été bien sage et il a visiblement utilisé soit un variant, soit un booléen

  17. #17
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    je suis d'accord avec vous, le point d'arret je le mettrais au debut de la macro, pour voir pas à pas

    je me cite afin de bien voir ce que j'ai marqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d'arret à cet endroit (voire meme plus haut dans la macro)
    de plus sur la ligne de la boite de dialogue ca marche aussi, et en passant avec le curseur dessus vous trouveriez les differentes valeur que renvoie la boite. (Personnellement je ne pense pas avoir parlé d'explorer la boite de dialogue)

    et je me recite :
    cette boite de dialogue, si elle est vraiement en cause, c'est windows qui est en cause
    je tiens à preciser que les boites de dialogue ne sont pas issues d'excel mais de windows donc je persiste,

    Soit il y a un probleme dans la macro dans sa globalité, sinon c'est windows qui bug

    Bonne journée à tous

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Peut-être est-ce même un pb d'Excel ou de fichier.
    Ce que je ferais.
    Après avoir redémarré Excel, je prendrais un classeur tout neuf avec quelques lignes renseignées, et je testerais ces quelques lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If Application.Dialogs(xlDialogPrint).Show Then
            MsgBox "C'est parti"
            Else
            MsgBox "C'est annulé !"
        End If
    Si, après avoir sélectionné "Annuler", l'impression s'effectue et le message est le second, alors le pb est bien de windows. Sinon, c'était soit le fichier, soit Excel qui demandait à être redémarré.
    Mais si tu as une autre solution, wilfried_42, n'hésite pas.
    A+
    PS - Au fait aucun boolean n'est nécessaire si la réponse attendue est true ou false

  19. #19
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:

    il faut cerner le probleme, c'est le plus compliqué

    et en lancant la boite de dialogue manuellement Menu Fichier/Imprimer ca donne quoi ?

    si ta solution ouskel'nor pour cerner le probleme il va falloir le fichier pour regarder toute la macro

    En esperant que tu aies raison pour la reouverture d'excel

    Je suis le fil et je cherche................

    @ + Wilfried

  20. #20
    Membre Expert Avatar de wilfried_42
    Homme Profil pro
    Auto-entrepreneur
    Inscrit en
    Novembre 2006
    Messages
    1 427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Auto-entrepreneur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 427
    Par défaut
    re:


    Autre question : Comment la macro est elle lancée ? par bouton, menu, touche de racourci ????

    un idée là vieille de 20 ans mais qui pourrait revenir je ne suis pas assez calé sur windows

    @ +

Discussions similaires

  1. quand est lancé l'événement "onload"
    Par Zbouirf dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 08/07/2010, 09h25
  2. [AC-2003] Empêcher d'ouvrir une autre application quand la mienne est lancée
    Par flet le kid dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/07/2009, 14h04
  3. Réponses: 6
    Dernier message: 21/03/2009, 16h29
  4. Redemarrage quand IE est lancé
    Par kitiss dans le forum Windows XP
    Réponses: 2
    Dernier message: 01/09/2006, 00h11

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