macro pour imprimer dans une imprimante choisit

D

Denis

Guest
Bonjour

J'aimerais une macro , je sais pas si ça se fait mais voila l'action faite.
Il y a une secrétaire qui remplit un papier d'expédition dans ce papier elle ajoute l'adresse ou expédier la marchandise, l'adresse est toujours sous la ligne ou c'est indiqué le mot marks il n'y a jamais d'espace entre les lignes pour l'adresse et il y a toujours une ligne vide à la fin.
Ce que j'aimerais pouvoir faire est de créé une macro qui prendrait ce champs là, l'exporterait sous format word dans un format paysage et grosseur de police de 40 et que ça s'imprime dans une imprimante choisit du réseau et que le tiroir 2 de cette imprimante soit choisit aussi (endroit où se trouve un papier collant pour l'expédition de la marchandise) Pensez-vous que ça puisse se faire ??? si oui pouvez-vous m'aider ? j'inclus le papier d'expédition


Denis
 

Pièces jointes

  • expedier.zip
    13.5 KB · Affichages: 46
Z

Zon

Guest
Salut,

Voici un petit exemple dans le fichier joint. J'explique ce qui se passerait avec du sendkeys chez moi. POur l'exemple je n'ouvre que la boite de dialogue Imprimer.=> attention c'est du bidouillage pour la partie impression.

Au boulot le sendkeys fonctionne depuis quelques mois pour n'importe quel utilisateur sachant que tout le monde a le même paramètrage sur le réseau=> avec une seule utilisatrice ça devrait passer, c'est plus simple que de passer par des API sinon je dois avoir cela qui traine par là.

Si j'ai bien compris c'est la plage [A47:54] que tu veux sous Word ?

A+++
 

Pièces jointes

  • Ecriredansword.zip
    17.9 KB · Affichages: 70
D

Denis

Guest
Le problème est que c'est pas toujours la même plage où se retrouve l'adresse d'expédition, mais c'est toujours sous la ligne ou c'est marqué le mot MARKS: et il y a toujours une ligne vide sous l'adresse d'expédition, ce que j'aimerais pouvoir faire est une macro qui détecterait le mot MARKS: et prendrait le champ sous ce mot jusqu'à la ligne vide exporterait ce champ (l'adresse d'expédition) dans une page word sous format paysage avec une grosseur de police de 40 ensuite que la macro choisisse une imprimante du réseau qui sera toujours la même avec le choix du tiroir 2 où se trouve les papiers collants pour coller cette adresse sur la caisse à expédiée et imprimer 2 copies, est-ce que vous pensez que cette macro est réalisable ??? tout un défi je crois, merci de m'aider.

Denis
 
D

Denis

Guest
En effet j'ai 2 marks dans ma feuille j'avais pas remarqué, le marks que je veux se retrouve toujours dans une des lignes 43 à 47, je ne sait vraiment pas comment inscrire cette condition dans la macro je suis nul dans ça est-ce que tu peux m'aider svp


Denis
 
Z

Zon

Guest
Salut,

J'ai rajouté une petite fonction pour trouvé Marks dans la plage A43:A47, une boucle suffit, si il ne trouve rien un message avertit l'utilisateur.

Sub ImprimerDansword()
Dim App As Object, Plage As Object
Dim T, I As Byte
Dim C As Range
T = RecupTableau([A43:A47], "MARKS")
If IsArray(T) Then
On Error Resume Next
Set App = GetObject(, "Word.Application")
If Err <> 0 Then Set App = CreateObject("Word.Application")
With App
.Visible = True 'mettre à false pour cacher l'instance une fois les tests finis
.Activate
.documents.Add
With .Selection
For I = 1 To UBound(T)
.TypeText Text:=T(I, 1)
.TypeParagraph
Next I
End With
Set Plage = .activedocument.Range(0, .Selection.End)
Plage.Font.Size = 40
.activedocument.PageSetup.Orientation = 1 'Paysage
'Un exemple chez moi, si tes utilisateurs ont des profils différents, rajouter un userform avec gestion d'utilisateurs.
' Application.SendKeys "^p%n{DOWN}~%o%b{DOWN}~{TAB}{TAB}{TAB}~", True
'Pour le test j'ouvre juste la boit de dialogue imprimer
Application.SendKeys "^p", True
'Une fois imprimer on fermera word sans sauvegarder les modifications du document créé
' .activedocument.Close False
End With
Set Plage = Nothing
Set App = Nothing
Else: MsgBox "Valeur Non trouvée", vbInformation, "Erreur"
End If
End Sub

Function RecupTableau(Plage As Range, Val$)
'La recherche ne tient pas compte de la casse, dernier argument de Instr
Dim C As Range
For Each C In Plage
If InStr(1, C.Value, Val, 1) > 0 Then
RecupTableau = Range(C, C.End(xlDown)).Value 'mettre C.offset(1,0) pour ne pas prendre en compte la cellule contant marks
Exit For
End If
Next C
End Function

A+++
 
D

Denis

Guest
je crois que j'ai réussis à faire activer la macro, mais une chose le mot marks apparait sur la page à imprimer es-ce qu'il y a moyen que le mot apparaisse pas ?? merci de ton aide Zon tu m'es d'un grand secours

Denis
 
D

Denis

Guest
j'ai réussis à enlever le mot Marks dans la page à imprimer,mais je ne sais pas comment faire pour mettre dans la macro le choix de l'imprimante sur le réseau, les 2 copies à imprimer et de prendre le tiroir 2 es-ce que tu pourrais m'aider pour cela encore svp tu es d'une bonne aide et j'apprécie beaucoup ce que tu fais pour moi

Denis
 
Z

Zon

Guest
Salut,


Je te l'avais mis en commentaire.

'Pour le test j'ouvre juste la boit de dialogue imprimer
Application.SendKeys "^p", True
'Une fois imprimer on fermera word sans sauvegarder les modifications du document créé
.activedocument.Close False
End With

A+++
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 083
Membres
103 458
dernier inscrit
Vulgaris workshop