[R] Imprimer un " .doc " avec un nom variable

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

[R] Imprimer un " .doc " avec un nom variable

#1

Message par parazitenew »

Bonsoir,

J'ai crée un script qui tape dans un .doc et le sauvegarde sous un autre nom, un nom choisis par l'utilisateur dans un input, voici le code de cette partie:

Code : Tout sélectionner

_WordDocSaveAs($oDoc, @ScriptDir & "\Factures\" & GUICtrlRead($input5) & ".doc")
Je souhaiterai donner la possibilité à l'utilisateur d'imprimer ou d'ouvrir ce fichier à la fin de sa rédaction, alors à la fin du script un GUI s'affiche avec 3 bouton "Imprimer, Ouvrir, Ne rien faire"

le code des boutons "imprimer" et "Ouvrir" était ce ci:

Code : Tout sélectionner

Case $msg = $impr
                     _WordDocPrint($oDoc)
                 Case $msg = $open
                    _WordDocOpen($oDoc, @ScriptDir & "\Factures\" & GUICtrlRead($input5) & ".doc")
J'ai essayé de remplacer _WordDocOpen par FileOpen mais rien n'y fait, à chaque fois que je clique sur ces boutons le message d'erreur
Word.au3 Error from function _WordDocOpen, $_WordStatus_InvalidObjectType
apparait, pareil pour le l'impression.


Une idée sur comment demander au programme d'imprimer ou d'ouvrir un fichier word alors que son nom dépend de l'utilisateur ???

J'en profite pour vous demander aussi s'il ya une macro qui récupere l'adresse MAC d'un PC comme @ComputerName, je compte restreindre l'execution de mon programme un 1 seul PC, pour le moment j'ai mis ça:

Code : Tout sélectionner

$key = @ComputerName

If $key <> "IMED-PC" Then
    MsgBox(16,"Erreur","Clé invalide avec cet ordinateur")
    Exit
EndIf
La faille c'est que le changement de nom d'un PC est trés facile, donc ma protection ne sert à rien.

Merci.
Modifié en dernier par parazitenew le lun. 13 févr. 2012 19:31, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#2

Message par mikell »

On pourrait avoir un bout de script fonctionnel ? parce que là c'est plutôt flou ^^
Pour la protection, pourquoi pas le n° de série du HD ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#3

Message par parazitenew »

Code : Tout sélectionner

$oWordApp = _WordCreate (@ScriptDir & "\Model\Model.doc", 0, 0)
          $oDoc = _WordDocGetCollection ($oWordApp, 0)
           _WordDocFindReplace($oDoc, "Ndc", GUICtrlRead($input1))
          _WordDocSaveAs($oDoc, @ScriptDir & "\Factures\" & GUICtrlRead($input5) & ".doc")
          _WordQuit ($oWordApp, 0)
 
Le script ouvre un fichier " Model.doc " deja présent dans le dossier "Model" et remplace le "Ndc" par ce qui est lu à partir de l'input1, "Un nom d'une personne par exemple" aprés il le sauvegarde sous un autre nom, un nom spécifié par l'utilisateur en "input5" du GUI par exemple "test.doc", aprés je souhaiterai donner la possibilité à l'utilisateur d'imprimer ou d'ouvrir ce fichier.

Voilà.

Je ne peux pas passer tout le script parcequ'il contient 318 lignes, et je voudrai commercialiser le programme.

C'est pour ça que j'ai demandé de l'aide pour l'adresse MAC, pour éviter que mon programme soit partagé à droite et à gauche lorsque je le vendrai à mon premier client.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#4

Message par mikell »

C'est le _WordQuit qui te ferme tout et notamment l'accès au fichier pour ouverture ou impression, il faut le mettre en toute fin de script
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#5

Message par parazitenew »

Je vai essayer ça, et pour la macro de N° de série de l'HD je ne la trouve pas dans la liste des macro AutoIt.

EDIT:

J'ai mis entre _WordDocSaveAs et le _WordQuit ceci:

Code : Tout sélectionner

$gui3 = GUICreate("",320,100)
                    $print = GUICtrlCreateButton("Imprimer",20,50,80,30)
                    $open = GUICtrlCreateButton("Ouvrir",120,50,80,30)
                    $no = GUICtrlCreateButton("Ne rien faire",220,50,80,30)
                    GUISetStyle($WS_BORDER)
                    GUISetState(@SW_SHOW)
                    
                    while 1
                        $msg = GUIGetMsg()
                            Select
                                Case $msg = $print
                                    _WordDocPrint($oDoc)
                                
                                Case $msg = $open
                                    _WordDocOpen($oWordApp, @ScriptDir & "\Factures\Facture " & GUICtrlRead($input3) & ".doc")
            
                                Case $msg = $no
                                    GUIDelete($gui3)
                                    ExitLoop
                            EndSelect
                    
                    WEnd

Petit soucis, je peux faire les actions par ordre uniquement et une seule fois, j'explique:

Le .doc se créer, se sauvegarde, le petit gui3 s'affiche, je clique sur "imprimer" ça s'imprime, sur "Ouvrir" ça s'ouvre aprés je reviens sur "imprimer", message d'erreur.
Word.au3 Error from function _WordDocPrint, $_WordStatus_InvalidObjectType
Si je clique sur "Ouvrir" en premier, je ne peux pas imprimer, aprés je dois relancer le script, sinon plus moyen d'ouvrir ou de fermer les documents.
En d'autre termes c'est un ======> OneShot !!!!!<======

Serait-il lié à la déclaration des variables $oDoc et $oWordApp à l'intérieur du GUI3 ??
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#6

Message par mikell »

Pour le n° du HD c'est DriveGetSerial
Pour le doc j'ai pas le temps là tout de suite
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#7

Message par parazitenew »

Merci pour le n°HD
Pas de problème ;) pour le doc, prends ton temps je continue d'y travailler de mon coté.

Edit:

J'ai trouvé d'où vient le problème, quand je clique sur "Ouvrir" le fichier s'ouvre, mais aprés je ferme le document, tout utilisateur le fermerai c'est un geste/reflexe normal aprés la vérification du document pour avoir un aperçu, alors que dans le script c'est concidéré comme un

Code : Tout sélectionner

_WordQuit
volà pourquoi c'est impossible d'imprimer aprés, et qu'il faut relancer le script car le

Code : Tout sélectionner

_WordQuit
écrit dans le script ne peut s'executer.

Je pense qu'il n'y pas de solution, mais retirer la fonction "Ouvrir" craint.
et le problème avec

Code : Tout sélectionner

 _WordDocPrint
c'est qu'il ny a pas de possibilité de donner le Path du fichier, sinon je lui aurais donné le même que pour l'Open et ça marcherai.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#8

Message par mikell »

parazitenew a écrit :Je pense qu'il n'y pas de solution, mais retirer la fonction "Ouvrir" craint.
OK word se ferme mais le script reste ouvert ^^
Tu pourrais après le print faire un test

Code : Tout sélectionner

If Not IsObj($oDoc) Then ...
ou même
If ProcessExists("winword.exe")
et si nécessaire refaire dans la foulée un _WordCreate, etc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#9

Message par parazitenew »

J'ai testé avec un nouveau _WordCreate , rien ne se passe en cliquant sur le bouton, même en rajoutant WordDocOpen en dessous.

Pour ton code j'avais pas vraiment compris au début, puis j'ai modifié le print:

Code : Tout sélectionner

Case $msg = $print
                                    If Not IsObj($oDoc) Then 
                                        $oWordApp = _WordCreate (@ScriptDir & "\Factures\Facture " & GUICtrlRead($input3) & ".doc")
                                        $oDoc = _WordDocGetCollection ($oWordApp, 0)
                                    EndIf
                                    _WordDocPrint($oDoc)
                               
Aprés ouverture et fermeture du document, il n'y avait plus de processus WINWORD.exe, alors en cliquant sur print je me suis dis qu'il va le recréer en ouvrant le fichier, mais rien du tout:
_WordDocPrint, $_WordStatus_InvalidObjectType
J'ai trouvé un script sur le forum anglais pour afficher le .doc dans un navigateur integré, ça règle bien des problèmes, le hic c'est que ça date de 2006 sous IE 6 ou 7, alors que chez moi aulieu que le doc s'affiche le Browser me demande "Ouvrir, Enregistrer, Annuler"

http://www.autoitscript.com/forum/topic ... ed-in-gui/

Tu peux y jeter un oeil.
Modifié en dernier par parazitenew le lun. 13 févr. 2012 16:44, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#10

Message par mikell »

parazitenew a écrit :Pour ton code j'ai pas vraiment compris à quoi ça sert
Je pensais à qqe chose comme ça
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#11

Message par parazitenew »

Oups j'ai édité mon message d'avant tu la raté ><
Je vais essayé ton code

Edit:
Ton code marche à moitié, la première fois y'a pas de problème, aprés la fermeture de la facture, que j'appuie sur le bouton "imprimer" ou "Ouvrir" la facture s'ouvre avec un document vierge, et pour l'impression c'est pareil, la facture s'ouvre avec un document vierge sans impression.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#12

Message par mikell »

Bah faut essayer d'être créatif et faire des tests :mrgreen:
La solution est certainement de ce genre
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#13

Message par parazitenew »

J'ai apporté des modifications à ton code:
► Afficher le texte
et ça marche proprement, la 1ere ouverture du document se fait en arrière plan on ne le voie même pas, mais les ouvertures d'apres c'est en 1er plan, je dois reglé ça et ça sera fini :)

Edit: Nous étions entrain de répondre au même moment ><

Merci pour ton aide, si tout va bien, je citerai ton pseudo pour ta contribution :D
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#14

Message par Tlem »

N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#15

Message par parazitenew »

Voici la version finale de cette partie du code, t'en dis quoi ?
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#16

Message par mikell »

Ben voilà, c'est quand même plus sympa maintenant :mrgreen:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
parazitenew
Niveau 7
Niveau 7
Messages : 310
Enregistré le : sam. 10 déc. 2011 15:08
Localisation : Algerie
Status : Hors ligne

Re: [..] Imprimer un " .doc " avec un nom variable

#17

Message par parazitenew »

Et merci encore :)
Répondre