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
 
M

marion

Guest
re chti160,
je suis stupide je recopie comme une idiote et je ne m apercois meme pas des erreurs graves a savoir
Dim ws As WorkSheet
'maintenant c est mieux!
Dim ShtName As String
For Each ws In SelectedSheets
ShtName = ws.Name
If ws.Range('C3') = 'NO ' & ShtName Then
Else
'et oui je ne ve pas imprimer les cellules NO+...
Sheets(ShtName).Activate
Sheets(ShtName).PrintOut Copies:=1
End If
Next
si = renvoie la valeur exacte est ce ke <> renvoie a une valeur differente comme dans excel et laje pourrai alors faire
Dim ws As WorkSheet
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
je suis encore plus stupide car je ne peux pas lire ton fichier car je n ai pas excel sur mon lap top.
c est d ailleurs pour cela que je fais la chiante car je ne peux pas tester si tu peux le faire pour moi ce serait vraiment sympa de ta part
ps est ce que j ai le droit de m adresser qu a toi sur le forum ou cela est impoli ce nest pas ecrit dans la charte mais a vrai dire il n ya que toi qui me repond
bon j arrete la mon blabla
a trs vite je l espere
et enore merci.
 

ChTi160

XLDnaute Barbatruc
re Marion
Oui <> renverra Vrai si C3 n'est pas égal à 'NO ' & ShtName
mais dans ma macro celà veut dire la même chose
Set rep = ws.Cells.Find('NO ' & ShtName)
si on ne trouve pas rep= false
donc si rep=False on active et on imprime
If rep Is Nothing Then
Sheets(ShtName).Activate
enfin tu verras demain le fichier joint
 
T

Thomas®

Guest
Bonjour Marion, ChTi160,

Sorry pour ce manque de réponse :eek: , mais ce week end j’ai eu un max de boulo, mais vu l’expert qui s’occupe de toi je ne doute pas que la solution est à porté de main.

Au passage je te salut ChTi160 pour tout les coups de mains que tu m’as filé (et que tu risque de me filer :p .)

Marion tiens nous au courrant et si tu as un problème je sui ce poste (au cas ou les experts ne serait pas encore là)

Bon courage
Thomas®
 
M

marion

Guest
bonjour a toi thomas
bon come tu as pu le voire on a bien avance avec chti160 surtout moi et mon vba j arrive mieux a comprendre les dim, les proprietes, les objets et les methodes.
j aimerai comprndre une chose comment on construit une collection
au depart ja vais fais
Dim maselection As Collection
Set maselection = array(1, 2, 3)
Dim ws As Worksheet
Dim ShtName As String
Dim rep As Range
For Each ws In maselection
mais cela ne marchait pas ca bug a la des la seconde ligne erreur 424.
alors j ai fouine dans l aide de vba et j ai trouver object
j ai essaye ca donne
Sub titi()
Dim maselection As Object
Set maselection = Sheets(Array(1, 2, 3))
Dim ws As Worksheet
Dim ShtName As String
Dim rep As Range
For Each ws In maselection
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
ET CA MARCHE OUPY
c est vrai ke l on ressent un sentiment de fierte a trouver une macro toute seule enfin relativisons
merci a tout les deux d avoir ete des anges et de m avoir soutenu durant cette rude epreuve que fut construire ma premiere macro importante.
a tres bientot sur le forum
marion
 
T

Thomas®

Guest
re bonjour,

Merci mais ne n'y suis pas pour grand chose.

C'est vrais que cela fait tres plaisir de trouver sois même la solution.

tu verras ce ce forum est vraiment un espace riche en information, de plus les gens sont vraiment tres simpa et ils savent être dispo pour un problème lorsque la demande est bien expliqué avec piece joint (et que la formulation est suivie d'une formule de politésse).

ce fut un plaisir de pouvoir t'aider.

@+ sur le forum
Thomas®
 

ChTi160

XLDnaute Barbatruc
Bonjour Marion
salut Thomas
bon on va pas pleurer Lol
Marion je suis content que l'aide que l'on a pu t'apporter te permette d'entrevoir que tu peux faire des choses en sachant utiliser les différentes Aides que tu as à ta disposition celle d'excel et VBA en premier l'enregistreur de Macro de la Barre d'outils VBA et bien sûr Internet et NOTRE Forum XLD en Particulier.
Pour répondre à ta question concernant les Collections
une des façon de déclarer une Collection c'est Dim maCollection as New Collection
Ensuite tu approvisionnes ta collection avec les éléments que tu veux
ex tu as une colonne avec des noms et tu veux créer une collection des noms de cette colonne pour les rentrer dans une Liste(donc sans doublons) et bien il faut savoir que l'approvisionnement d'une collection ne tolère pas les Doublons pratique
Pour approvisionner une collection on entre une Valeur Via Add et l'on donne un Index dans la collection à cette Valeur souvent la Valeur elle même au Format String
ex for each cellule in maplage(ex A1:A10)
On error Résume Next 'passe à la cellule suivante si erreur car Doublon
maCollection.Add cellule.Value, Cstr(cellule.value)
On error Goto 0 'annule la gestion du résume Next
next
en espérant avoir répondu à ta question .Je ne suis pas un pro mais c'est comme celà que j'ai appris et retenu et apprécié la Collection donc je transmet Lol

Pour ce qui est de Array cela ressemble plus à un tableau et tu peux avoir plusieurs fois la même Valeur
Dim myArray (1 to 4) as variant
myArray =Array('jean','Paul','Jean','4')
rep=IsArray(myArray) renvoie True si myArray est un Tableau
donc les collections sont plus adaptées si tu veux une liste sans doublons OupSSSSS

Message édité par: Chti160, à: 06/06/2005 13:46
 

laurent45

XLDnaute Occasionnel
Bonjour Marion, Chti160, Thomas,
Bonjour le Forum,

Je réfléchissais au pb de Marion. :pinch: Ce n'est qu'une idée
Ne serait-il pas possible et peut-être plus simple de créer un tableau de feuille pour l'impression. (Ca c'est déjà fait) :whistle:
Mais ensuite, faire sortir ou rentrer les feuilles 'à impression variable' avec le système de condition que vous avez déjà mis en place.

PRECISIONS : Ceci n'est pas du CODE, mais une idée
Je ne connais pas trop les tableaux...
déclaration du Array(feuil1, Feuil2...)
Code:
For Each ws in WorkSheets
   If Sheets(ws.Name).Range('C3').Value = 'No'& ws.Name Then
      Array.RemoveItem Sheets(ws.Name)
   End If
Next
Array.PrintOut Copies:=1
Je répète, ce n'est qu'une idée et pas du CODE
Je manque encore de 'Calage' dans ce domaine.

Bon courage

Laurent
 

ChTi160

XLDnaute Barbatruc
Salut Laurent
ce que tu avances est une possibilité qui peut être elle aussi
intéressante, il faut voir car Marion tiens à son Array[color] qui en quelque sort est un tableau donc à voir
je vais et tu peux tenté de faire autrement et ainsi il y aura plusieurs possibilités
je suis ce fil
A bientôt
 

PFRANCO

XLDnaute Junior
Re : Re:macro pour imprimer certaine page

Bonsoir ChTi 160, Marion, Thomas et tous les forumeurs,

ChTi, je voudrais te solliciter sur un code que tu as travaillé avec Marion et Thomas en son temps. Le voici:

Sub imp_condition()
Dim maselection As Object
Set maselection = Sheets(Array(4, 5, 6, 7, 8, 9, 10, 11, 12, _
13, 14, 15, 16, 17, 18, 19, 20, 21))
Dim ws As Worksheet
Dim ShtName As String
Dim rep As Range
For Each ws In maselection
ShtName = ws.Name
Set rep = ws.Cells.Find("OK" & ShtName)
If rep Is Nothing Then
Sheets(ShtName).Activate
Sheets(ShtName).PrintOut Copies:=1
End If
Next

End Sub


Il est conçu pour selectionner des feuilles à imprimer dans une collection et pour n'imprimer que celles qui ont un mot spécifique placé dans la feuille (dans l'exemple"OK").

La première partie fonctionne cependant il ne selectionne pas les feuilles qui comportent un mot spécifique et imprime toutess les feuilles de la collection.

Aurait tu une réponse, une explication?

Merci pour ta participation.

Philippe.
 

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki