macro pour imprimer certaine page

  • Initiateur de la discussion marion
  • Date de début
M

marion

Guest
Bonjour,
j ai un petit probleme , je voudrais imprimer tout un classeur expecter des feuilles dont je n ai pas besoin mais c est feuilles changent. En fait voila ce que j aimerai en language vba :
Si dans la feuille GRINDING en C3 j ai NO GRINDING alors ne pas imprimer, si dans la feuille POUNCE en C4 j ai NO POUNCE alors ne pas imprimer et si dans la feuille ADHESIVE en D6 j ai NO ADHESIVE alors ne pas imprimer (par defaut si je n ai pas NO ... j ai le nom du produit )
mon probleme c est que je suis une incapable en vba alors si une personne voudrait bien se pencher sur mon cas ce serait vraiment sympa surtout un vendredi apres midi
voici ma macro ke j ai pour imprimer pour l instant, comme vous le voyez j imprime tout et apres je jette...

Sub FOON()
'
' FOON Macro
' Macro recorded 09/05/2005 by marion.laflamme
'
' Keyboard Shortcut: Ctrl+p
'
Sheets(Array('1page', 'part1', 'part2', 'MIX SWINDON', _
'LAB COMPOUND', 'double ', 'cure swindon', 'slough mixing', 'LAB BLANKET', 'FACING', _
'POUNCE', 'CURE slough', 'CARRIER', 'GRINDING', 'AUTO INSPECTION', 'ADHESIVE', _
'TRIMMING', 'WASHING')).Select
Sheets('1page').Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


End Sub

bisous,
MArion
 
T

Thomas®

Guest
Bonjour marion, le forum,

ta demande n'est pas tres dure mais comme ton test de NO n'est pas toujours à la même place cela complique les choses.

dans le cadre de ton projet est il possible que tu formalises la structure de tes feuille afin que soit placé ton NO tjrs à la même place.

si cela n'est pas possible car c'est un tableau,peut tu par exemple

faire en 'AA1' = C3 (dans ta feuille Grinding)
'AA1' = C4 dans ta feuille Pounce

si tu peux

alors utilise
Code:
Dim ws As Worksheet

For Each ws In Worksheets

If ws.range('AA1') = 'NO GRINDING' or ws.range('AA1') = 'NO ....   Then
ws.PrintOut Copies:=1
end if
next ws

je n'ai pas testé mais si cela ne marche pas tu ne seras pas tres loing

Courrage
Thomas®
 

ChTi160

XLDnaute Barbatruc
Salut Marion
bonjour Thomas
bonjour le Forum
une petite idée si l'on fait un find sur chaque feuille
par ex

mot à chercher ='No'& Ws.Name

set rep=Ws.Cells.Find('mot à chercher')
if not rep Is nothing then
Ws.Print Copie:=1 .........................etc
non testé mais peut être une solution ????
je regarderai plus tard Lol
je suis le fil Oupss
bonne Journée à ceux qui bossent

Message édité par: ChTi160, à: 04/06/2005 09:18
 
M

marion

Guest
re le forum,salut ChTi160, j essaie dans tout les sens ca ne marche pas
ma formule bug des la deuxieme ligne sur sheets('POUNCE').ACTIVATE alors ke je suis certaine ke c est la bonne ecriture.

je vous montre ou j en suis

Dim printfoon()
Sheets('POUNCE').Activate
If Range('C3') = 'NO POUNCE' Then
PrintOut Copies:=1
End If

Sub printfoon()
Sheets(Array('PRESENTATION', '1page', 'FACING')).Select
Sheets('PRESENTATION').Activate
Range('B27').Select
Sheets(Array('1page', 'FACING', 'POUNCE', 'CURE slough', 'special cure', 'CARRIER', _
'GRINDING', 'WASHING', 'AUTO INSPECTION', 'ADHESIVE', 'DRY LAB', 'TRIMMING')). _
Select
Sheets('1page').Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
End Sub

si j arrive a faire marcher pour une feuille en test alors je naurai plus ke repeter trois fois la meme Dim, non?
merci d avvance...
 
M

marion

Guest
personne n a d idee alors snif, snif.
franchement le language vba, l est trop dur pour moi
je repare me coucher,lol.
j aimerai bien mais d abord faut que je trouve une soluce a mon probleme et seule je n y comprend rien.
s il vous plait....
 

ChTi160

XLDnaute Barbatruc
Re Marion

je ne sait pas si j'ai bien compris
mais cette macro corrigée de la tienne la feuil2 ne sera copiée que si la cellule C3 est différente de NO Feuil2
Sub Copy ()
Sheets('Feuil2').Activate
If Range('C3') = 'NO Feuil2' Then
Else
Sheets('Feuil2').PrintOut Copies:=1
End If
End Sub
tiens nous au courant
question 1 il faut boucler sur l'ensemble des Feuilles du Classeur et en fonction de la Valeur d'une certaine cellule imprimer ou pas ?????? c'est çà
question 2 la cellule contenant la référence No....fait elle partie d'une plage que l'on peut définir ???
Merci d'avance
 

ChTi160

XLDnaute Barbatruc
re
un autre essai
une boucle sur les Feuilles du classeur et impression de cette feuille si la Cellule testée ici C3 correspond au critère sinon rien

Sub copy()
Dim ws As Worksheet
Dim ShtName As String
For Each ws In Worksheets
ShtName = ws.Name
If ws.Range('C3') = 'NO ' & ShtName Then
Sheets(ShtName).Activate
Sheets(ShtName).PrintOut Copies:=1
End If
Next

End Sub

Message édité par: ChTi160, à: 04/06/2005 13:59
 

ChTi160

XLDnaute Barbatruc
re là tu vas être débordée
ou alors t'es vraiment partie te recoucher Lol
une version qui recherche dans la Feuille si ce trouve l'indication NO Nom de la Feuille
Sub copy()
Dim ws As Worksheet
Dim ShtName As String
Dim rep As Range
For Each ws In Worksheets
ShtName = ws.Name
Set rep = ws.Cells.Find('NO ' & ShtName)
If rep Is Nothing Then
Sheets(ShtName).Activate
Sheets(ShtName).PrintOut Copies:=1
End If
Next

End Sub

Message édité par: ChTi160, à: 04/06/2005 14:18
 
M

marion

Guest
desole chti160 de ne pas t avoir repondu plis tot
n ayant pas toujours acces a internet j ai voulu esayer une autre soluce
j ai voulu masquer les feuilles ont je n avais jamais besoin (a savoir mes bases de donnees) dans un premier temps, puis dans un second masquer les feuilles dont je n ai pas besoin pour certaine impression
puis ensuite imprimer les pages restantes
ca donne ca
Sub print()
Sheets(Array('PRESENTATION', 'LAB DATA', 'NEW DATA').Select
Hide.SelectedSheets
Sheets(array('POUCE', 'GRINDING', 'ADHESIVE').Select
If sheets('POUNCE').range('C3') = 'NO POUNCE' Then
hide.sheets('POUNCE') = TRUE
Else hide.sheets('GRINDING') = TRUE
And if
If sheets('ADHESIVE').range('C3') = 'NO ADHESIVE' Then
hide.sheets('ADHESIVE') = TRUE
And if
Workbooks('JOB CARD').PrintOut Copies:=1
End Sub

j ai suivit vos coseils a savoir mettre mes cellules a la meme adresse sur ces trois pages
ensuite je ne sais pas a koi sert DIM, pourriez vous m expliquer
ben sur cette macro ne marche pas car je ne connais toujours pas le language vba meme si je comence a comprendre.
de plus lorsque je lis les soluces de chti160 j ai bien l impression qu il a mal compris, je ne veux pas imprimer les pages ayant no+nom de la page en C3.
j ai bien l impression qu expliquer ses problemes et aussi dure que de comprendre vos macro, des commentaires serait les bienvenues.
merci.
 
M

marion

Guest
desole chti160,
n ayant pas acces a internet apres mes horaires de travail, je n ai pu lire vos reponses et j ai contiinue a chercher de mon cote, alors je me suis empressee de vous faire parvenir mes nouvelles pistes avant d approndir celle de chti160
maintenant que j ai pris plus de recul, je trouve la solution de chti160 relativement proche de ma requete.
la boucle est formidable mais j ai tout de meme un probleme qui persiste j ai besoin d imprimer k une selection des pages du classeur alors j ai continue le travail de chti160, si vous pouviez me corriger car je nai pas acces a mon travail depuis chez moi mais que ce dernier est censer etre fini pour demain.
j ai au prelable deja retouche a mes feuilles a savoir la cellules a analyser est toujours en C3
voila ce ke ca donne

Sub FOON()
'
' FOON Macro
' Macro recorded 09/05/2005 by marion.laflamme
'
' Keyboard Shortcut: Ctrl+p
'
Sheets(Array('1page', 'part1', 'part2', 'MIX SWINDON', _
'LAB COMPOUND', 'double ', 'cure swindon', 'slough mixing', 'LAB BLANKET', 'FACING', _
'POUNCE', 'CURE slough', 'CARRIER', 'GRINDING', 'AUTO INSPECTION', 'ADHESIVE', _
'TRIMMING', 'WASHING')).Select
Dim ws As select.sheets
Dim ShtName As String
For Each ws In select.sheets
ShtName = ws.Name
If ws.Range('C3') = 'NO ' & ShtName Then
Sheets(ShtName).Activate
Sheets(ShtName).PrintOut Copies:=1
End If
Next
End Sub

est ce ke si je copie cette formule dans vba cela aura un sens.
merci
 
M

marion

Guest
re,
juste pour info que signifie
Dim ws As SelectedSheets
Dim ShtName As String
For Each ws In selectedSheets

c est ce DIM ws que je ne comprend pas
merci
est ce que selectedsheets a un sens si on a deja selectionnee plusieurs feuilles au prealable ou faut il utiliser un autre code
merci encore
 

ChTi160

XLDnaute Barbatruc
Salut Marion
Bonsoir le Forum
pour ce qui est de ma Macro elle ne copie que les Feuilles qui renvoient rep=Faux(il n'y a pas de NO Nom de la Feuille) dans les cellules de la feuille testée

donc celà répond à ta demande et quelque soit le nombre de feuille
For Each ws In Worksheets signifie pour chaque feuille de la collection des feuilles du Classeur Actif
Pour ce qui est du Dim celà sert à déclarer le Type de la Variable
exemple Dim ws as workSheet
déclare la variable ws comme étant une Feuille de Calcul
ensuite lors d'une boucle For Each ws In Worksheets ws Prend successivement les Caractéristiques de chaque feuille Ex Ws.Name
pour ce qui est de ta déclaration
dim ws as selectedSheets celà me fait plus penser à une collection car si je comprends bien celà représente l'ensemble des Feuilles Sélectionnée donc tu ne peux comparer Ws a lui même je pense il faut déclarer une collection que tu apprvisionnes avec le nom des Feuilles sélectionnées et ensuite tu passes en revue cette collection celà est plus Lourd je pense
je ne sais pas si je peux joindre un fichier enfin je post et on verra [file name=Marion_2.zip size=9091]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Marion_2.zip[/file]

Message édité par: Chti160, à: 05/06/2005 19:07
 
Dernière édition:
M

marion

Guest
re le forum et bonsoir chti160
je suis heureuse de t avoir je t ecris et ensuite je vais voire ce que tu m as pondu, merci de m eclairer sur les codes car franchement je suis perdue
j essaie de comprendre via des sites le language et la codification mais c est pas facile.
pourrez tu me dire ce que tu pense de ca

Sub FOON()
' je selectionne les feuilles ki m interessent
Sheets(Array('1page', 'part1', 'part2', 'MIX SWINDON', _
'LAB COMPOUND', 'double ', 'cure swindon', 'slough mixing', 'LAB BLANKET', 'FACING', _
'POUNCE', 'CURE slough', 'CARRIER', 'GRINDING', 'AUTO INSPECTION', 'ADHESIVE', _
'TRIMMING', 'WASHING')).Select
'je realise la boucle en renvoyant comme reference les feuilles deja selectionnees
Dim ws As selectedSheets
Dim ShtName As String
For Each ws In selectedSheets
ShtName = ws.Name
If ws.Range('C3') = 'NO ' & ShtName Then
Sheets(ShtName).Activate
Sheets(ShtName).PrintOut Copies:=1
End If
Next
End Sub

je ne sais pas si ma bidouille a un sens...
j en deviens folle de ce vba, je bosse meme le dimanche et toute la journee, je n en peu plus...
merci...
 

Statistiques des forums

Discussions
315 096
Messages
2 116 183
Membres
112 677
dernier inscrit
Justine11