Impression via un printscreen

Yohan05

XLDnaute Occasionnel
Bonjour et bonne année à tous,


Je vous décris l'objectif du code que j’aimerais bien mettre en application :

Il s'agit de copier le contenu de la plage "A12:H53" de feuil "commande" vers "A12:J39" de feuil "bon de livraison" mais il peut y avoir des images ou autre mise en formes qui ne peuvent pas être modifiées.

Donc la difficulté est de conserver la mise en page et de copier également des images incorporées aux textes.

J’insérerai ensuite le code pour l'impression mais je ne vois pas comment copier les données avant impression?

Merci pour votre aide.

Yohan
 

Yohan05

XLDnaute Occasionnel
Re : Impression via un printscreen

Bonjour,

Je mets le fichier en PJ .

Merci à vous...

Yohan
 

Pièces jointes

  • test printscreen.xlsm
    159.2 KB · Affichages: 48
  • test printscreen.xlsm
    159.2 KB · Affichages: 51
  • test printscreen.xlsm
    159.2 KB · Affichages: 52

Yohan05

XLDnaute Occasionnel
Re : Impression via un printscreen

Bonjour Martial,

En fait mon but est de faire un redimensionnement ou bien de coller l’excès de données sur un feuille blv 2.
La complication est de faire cela Quand il y a une feuille devis ou plusieurs...

Je ne vois pas comment intégrer ta formule en fait??

Merci de ton aide...
Yohan
 

Yaloo

XLDnaute Barbatruc
Re : Impression via un printscreen

Re,

Explique exactement ce que tu souhaite faire, étape par étape, car là c'est compliqué et assez confus.

Tu parles de feuille commande et bon de livraison dans ton premier post ensuite le fichier contient des feuilles devis et devis1, ci-dessus il y a des feuilles blv et "quand une feuille devis ou plusieurs..."

Ce que je t'ai mis au post #5 n'est pas une formule mais une macro, je pensait que tu savais ce que c'était puisqu'il y en a dans ton fichier.

A te relire

Martial
 

Yohan05

XLDnaute Occasionnel
Re : Impression via un printscreen

Re,

En fait j'ai réexpliqué dans le fichier en PJ.
J'ai compliqué en effet en créant le fichier test. sorry

Je pense que j'ai mieux expliqué dans le fichier.

Merci pour ton aide...

Yohan
 

Pièces jointes

  • test printscreen.xlsm
    161.1 KB · Affichages: 54
  • test printscreen.xlsm
    161.1 KB · Affichages: 55
  • test printscreen.xlsm
    161.1 KB · Affichages: 52

Yaloo

XLDnaute Barbatruc
Re : Impression via un printscreen

Re,

Toujours pas tout compris :confused:

Si je comprends bien (mais c'est pas sûr :eek:) :

1 - Soit tu veux créer plusieurs bons de livraison en fonction de "commande", "commande partielle 1" et "commande partielle 2".
2 - Soit tu veux créer un bon de livraison complet avec toutes les commandes, mais comme c'est sur plusieurs feuilles tu veux conserver ton entête ?
3 - Soit je n'ai vraiment rien de rien compris.

A te relire

Martial
 

Yohan05

XLDnaute Occasionnel
Re : Impression via un printscreen

Voila j'ai trouvé la majeur partie du code mais il me reste une manipulation si tu peux m'aider :

Sub Test()
Dim Onglet As Worksheet

'Boucle d'impression
For Each Onglet In ThisWorkbook.Worksheets
If InStr(1, Onglet.Name, "Commande ") > 0 Then
Sheets(Onglet.Name).Select
'copier les cellules A12:H53 de commande vers A12:H53 de bon de livraison en créant cette feuille
Sheets(Onglet.Name).Visible = False

End If

Next
Sheets("Feuil1").Range("VDX1000").Value = "" 'On invalide l'impression

strName = InputBox(Prompt:=" Entrer Votre Code", _
Title:="ACCES", Default:="")

If strName = "" Or _
strName = vbNullString Then
Exit Sub
Else
Select Case strName
Case "scm"


Sheets("Feuil1").Range("VDX1000").Value = "1" 'On valide l'impression.....


ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=False

Case Is <> "scm"
CreateObject("Wscript.shell").Popup " ACCES REFUSE ", 1, " ERREUR", vbCritical
Exit Sub
End Select
End If

End Sub


Je te reprécise à la base du classeur existe une feuille => commande et 1 feuille => bon de livraison

J'aimerais copier les cellules A12:H53 de commande vers bon de livraison A12:H53 ensuite masquer les feuilles commençant par "commande" pour que le code fasse imprimer les différents bon de livraisons. on est donc bien dans le cas 1 de tes propositions.
Je ne sais pas comment organiser les boucles??
J’espère avoir été plus clair.

Merci de l'aide...

Yohan
 

Yaloo

XLDnaute Barbatruc
Re : Impression via un printscreen

Re,

Donc si je résume :

Pour chaque feuille COMMANDE :

1 - Copie des cellules A12:H53 de la feuille COMMANDE dans la feuille BON DE LIVRAISON
2 - Impression de la feuille BON DE LIVRAISON.
3 - On recommence pour la feuille COMMANDE suivante.

Comme tu as un mot de passe pour l'impression, soit tu le mets avant, et tu lances tes impressions après, soit tu lances tes impressions et tu insères ton mot de passe dans ta boucle. Dans le dernier cas, il faut saisir le mot de passe à chaque fois.

Dans le fichier ci-dessous, on demande le mot de passe en premier, puis on copie les données dans la feuille BON DE LIVRAISON on imprime le BON DE LIVRAISON, on efface les données puis on passe à l'onglet suivant.

Vois si ça te convient.

A te relire

Martial
 

Pièces jointes

  • test printscreen.xlsm
    161.9 KB · Affichages: 43
  • test printscreen.xlsm
    161.9 KB · Affichages: 43
  • test printscreen.xlsm
    161.9 KB · Affichages: 48

Yaloo

XLDnaute Barbatruc
Re : Impression via un printscreen

Bonjour Yohan, le forum,

Je viens de faire ton fichier avec la création de feuille puis l'impression de celle-ci, comme ça tu auras les 2 méthodes.

A te relire

Martial
 

Pièces jointes

  • test printscreen.xlsm
    161.9 KB · Affichages: 49
  • test printscreen.xlsm
    161.9 KB · Affichages: 52
  • test printscreen.xlsm
    161.9 KB · Affichages: 51

Yohan05

XLDnaute Occasionnel
Re : Impression via un printscreen

Bonjour Martial,

Ton code est très bien fait.
J'ai du remanier un petit peu car avec la protection contre l'impression cela ne fonctionnait pas.

Il mreste 1 seul problème : si il y a deux commandes, les deux bons de livraison sont bien créés mais seulement un seul s'imprime 2 fois (le N°2).

Je ne comprend pas bien pourquoi?

Voici le code remanié :

Sub Test()

Dim Onglet As Worksheet
'n étant le N° du bon de livraison
n = 1
'Pour toutes les feuilles
For Each Onglet In ThisWorkbook.Worksheets
'Si la feuille contient Commande
If InStr(1, Onglet.Name, "Commande") > 0 Then
'Copie la feuille Moèle BL
Sheets("Modèle BL").Copy After:=Sheets(1)
'Renomme la nouvelle feuille avec le nom "Bon de livraison " + un N°
Sheets("Modèle BL (2)").Name = "Bon de livraison " & n
'On copie la plage A12:H53 dans la feuille BON DE COMMANDE
Sheets(Onglet.Name).[A12:H48].Copy ActiveSheet.[A7:H43]
n = n + 1
End If
Next

Sheets("Feuil1").Range("VDX1000").Value = "" 'On invalide l'impression

strName = InputBox(Prompt:=" Entrer Votre Code", _
Title:="ACCES", Default:="")

If strName = "" Or _
strName = vbNullString Then
Exit Sub
Else
Select Case strName
Case "scm"

Sheets("Feuil1").Range("VDX1000").Value = "1" 'On valide l'impression.....

For Each Onglet In ThisWorkbook.Worksheets
'Si la feuille contient Livraison
If InStr(1, Onglet.Name, "Bon de livraison ") > 0 Then
'Impression du BON DE LIVRAISON
ActiveSheet.PageSetup.PrintArea = "$A$1:$H$49"
ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
End If
Next 'ICI TA MACRO.....

Case Is <> "scm"
CreateObject("Wscript.shell").Popup " ACCES REFUSE ", 1, " ERREUR", vbCritical
Exit Sub
End Select
End If

End Sub
 

Yaloo

XLDnaute Barbatruc
Re : Impression via un printscreen

Bonjour Yohan,

Tu as trouvé ou pas ?

Cela me semble normal, car tu as, dans ta deuxième boucle For Each Onglet... , aucun ne correspond à ton Onglet.

Il est donc normal que tu imprimes toujours la même feuille.

VB:
For Each Onglet In ThisWorkbook.Worksheets
 'Si la feuille contient Livraison
 If InStr(1, Onglet.Name, "Bon de livraison ") > 0 Then
 'Impression du BON DE LIVRAISON
 sheet(Onglet).Activate
 ActiveSheet.PageSetup.PrintArea = "$A$1:$H$49"
 ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
 End If
 Next

En activant ton onglet cela devrait fonctionner beaucoup mieux.

A te relire

Martial
 

Statistiques des forums

Discussions
312 679
Messages
2 090 848
Membres
104 677
dernier inscrit
soufiane12