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

WinDev Discussion :

Impression fichier Excel sans ouvrir excel ! [WD17]


Sujet :

WinDev

  1. #1
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut Impression fichier Excel sans ouvrir excel !
    Bonsoir,

    je poursuis le développement d'une petite appli qui, à partir d'une référence d'article, va scanner des emplacements réseaux bien définis afin de trouver tous les documents pdf et/ou excel en rapport avec l'article.

    Ensuite, l'utilisateur doit pouvoir cocher/décocher les documents trouvés, et lancer l'impression en lot des documents qu'il souhaite.

    Je sais imprimer du pdf sans passer ni par un activex ni par LanceAppliAssociée (j'utilise un petit exécutable, Sumatra, placé sur un partage réseau) et ça marche très bien.

    Par contre, je ne sais pas imprimer de l'excel ou du word, sans que l'appli respective ne s'ouvre. Est-ce que quelqu'un a déjà fait ça ? Il faut impérativement que les impressions se fassent en "sous-marin" ...

    Merci pour votre aide toujours aussi précieuse.

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 372
    Points : 9 534
    Points
    9 534
    Par défaut
    Je ne connais pas de solution autre que de "piloter" excel...
    Soit un lanceappliassociée avec le verbe "print". A voir si tu peux ouvrir excel en réduit...
    Soit passer par l'activex (voir exemple pilotage de excel).

  3. #3
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Quand je butais sur la problématique d'impression silencieuse de pdf, je m'étais demandé si on ne pouvait pas charger le document dans un objet, dans windev, et invoquer une quelconque méthode d'impression de l'api de l'objet encappsulant en question. Est-ce qu'on ne pourrait pas faire ça avec un excel ou un word ?

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 372
    Points : 9 534
    Points
    9 534
    Par défaut
    Regarde l'exemple "pilotage de Excel", je pense que tu trouveras ton bonheur.

  5. #5
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Une idée en passant masi vraiment pour dire quelque chose :
    En utilisant une API Google doc? Charger et imprimer sur un google doc non affiché?

    bonne recherche

  6. #6
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Bonjour,

    bon j'ai regardé l'exemple de pilotage d'excel mais il bug sur mon install, quand je clique sur les différents boutons ilne se passe rien !!

    En fait je crois que je pourrais peut-être m'en sortir en utilisant un objet OLE créé à la volée, qui serait invisible, et à qui j'ordonnerait l'impression.

    Mais il me faudrait connaître les différentes commandes qui permettent de commander cet objet OLE... Qqun peut m'orienter ? Merci

  7. #7
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour,
    Je travaille avec des fichiers xls.
    Avant je n'avais pas la classe cexcel et du coup je suis passée par les objets ole automation.
    Je n'ai pas le code sous les yeux, mais il est tout à fait possible d'ouvrir un fichier excel sans qu'il soit visible (activewindow je crois), puis l'imprimer et le refermer.
    Par contre je me pose la question de ce qu'il se passe si l'utilisateur a déjà excel d'ouvert... de mémoire (mais bon....) cela n'est plus en masqué...
    Autre inconvénient : ton programme plante, excel reste ouvert sur le fichier excel et à moins d'ouvrir un autre xls, de tuer le process ou de fermer la session, il sera en lecture seule

    Gancau

  8. #8
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 372
    Points : 9 534
    Points
    9 534
    Par défaut
    Citation Envoyé par bvadam Voir le message
    Bonjour,

    bon j'ai regardé l'exemple de pilotage d'excel mais il bug sur mon install, quand je clique sur les différents boutons ilne se passe rien !!

    En fait je crois que je pourrais peut-être m'en sortir en utilisant un objet OLE créé à la volée, qui serait invisible, et à qui j'ordonnerait l'impression.

    Mais il me faudrait connaître les différentes commandes qui permettent de commander cet objet OLE... Qqun peut m'orienter ? Merci
    Excel est bien installé sur la machine ?
    Si c'est le cas, essaye de faire "réparer excel".
    Ca fonctionne avec excel 2003 et 2007 avec du wd10 et du wd12. Pour excel 2010, je ne sais pas.

  9. #9
    Membre éprouvé

    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    402
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2009
    Messages : 402
    Points : 915
    Points
    915
    Par défaut
    Mais justement l'idée de départ (me semble t'il) est de pouvoir imprimer des fichiers Excel SANS forcement avoir Excel car les fichiers xls sont sur le réseau.
    Donc l'idée de "piloter" un tableur en tache de fond me parraît hors de propos.
    Il serait beaucoup plus judicieux (puisqu'on est en réseau) de faire ses impressions depuis un affichage Internet des fichiers Excel.
    C'est pourquoi je suggerrai précédemment d'utiliser l'omnipotant (trop peut être) Google Document.
    Ce qui a en plus l'énorme avantage de ne pas avoir à gérer les versions.

  10. #10
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 372
    Points : 9 534
    Points
    9 534
    Par défaut
    Dans ce cas, soit google documents, soit un visualiseur excel. Je viens de vois qu'il en existait d'autres que celui de microsoft : XLS viewer. A tester pour voir si on peut faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    lanceAppli(CherminXLSviewer+"XLS viewe.exe" + CheminDoc + " print")

  11. #11
    Membre averti Avatar de droliprane
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mai 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2005
    Messages : 710
    Points : 444
    Points
    444
    Par défaut
    Petit retour, je vous dois bien ça

    Le code suivant fonctionne bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    xl est un objet OLE "Excel.Application"
    // Excel est caché
    xl>>Visible = OLEFaux
    xl>>workbooks>>Open(sUnFichier) // ouvre le classeur 
    xl>>ActiveSheet>>PageSetup>>Zoom=False
    xl>>ActiveSheet>>PageSetUp>>FitToPagesWide = 1
    xl>>ActiveSheet>>PageSetUp>>FitToPagesTall = 1
    xl>>ActiveSheet>>PrintOut()
    // ferme et quitte sans sauvegarder
    xl>>activeworkbook>>close(OLEFaux) 
    xl>>Quit()
    On voit un petit popup de lancemet de l'impression mais c'est rapide, donc pas gênant.

    MAIS ! Je n'arrive toujours pas à préciser l'imprimante de destination.
    J'ai essayé PrintOut(1,1,1,OLEFaux,monImprimante)

    mais ça me mets une erreur, en gros une mavaie utilisation de l'api PrintOut...

    Pour l'instant seule le PrintOut() sans arguments fonctionne, et envoie l'impression sur l'imprimante par défaut...

    EDIT : CA FONCTIONNE ! J'avais une erreur dans ma chaine de caractère de mon imprimante. PrintOut(1,1,1,OLEFaux,monImprimante) fonctionne parfaitement.

    ll me reste à vérifier que les fichers ouverts par cette méthode sont correctement fermés sans quoi personne ne pourrait les rouvrir en écriture ensuite.... Et aussi voir ce qui se passe si j'ai une coupure réseau ou un plantage de l'appli, dans quel état sont les fichiers "ouverts à moitié" !!

  12. #12
    Membre éclairé Avatar de J0r_x
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2006
    Messages : 804
    Points : 751
    Points
    751
    Par défaut
    En cas de plantage de l'application pendant l'impression, le processus EXCEL.exe restera actif, et donc ton document restera ouvert.

  13. #13
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 372
    Points : 9 534
    Points
    9 534
    Par défaut
    Donc, il faut tuer le processus quand tu as fini ton impression : tu regardes si tu as excel + nom de ton fichier toujous actif après fermeture...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lancer une macro excel sans ouvrir excel
    Par Invité(e) dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/08/2011, 13h26
  2. [WD14] Lancer une macro excel sans ouvrir excel
    Par christophe9117 dans le forum WinDev
    Réponses: 9
    Dernier message: 15/06/2011, 11h50
  3. Ouvrir Excel sans ouvrir classeur vide
    Par MichelD dans le forum Excel
    Réponses: 6
    Dernier message: 23/08/2007, 11h54
  4. Exécution de marco Excel sans ouvrir Excel
    Par fledev dans le forum VBScript
    Réponses: 4
    Dernier message: 17/11/2006, 19h52
  5. [C#] [EXCEL] Travailler avec EXCEL sans ouvrir le logiciel
    Par Fabsou dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/07/2004, 10h29

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