Impression de feuille excel sous conditions

Impression de feuille excel sous conditions - VB/VBA/VBS - Programmation

Marsh Posté le 31-07-2009 à 15:34:46    

Salut all !
 
J'ai un fichier Excel, une vraie usine à gaz, mais il marche super bien.
 

Code :
  1. Là je raconte ma life, si ça vous intéresse, sinon passez à la suite...
  2. Imaginons que je fabrique des PC qui peuvent être de couleur noire, de couleure blanche ou bicolores, et équipés en option d'un port RS232, d'un port parallèle, des deux ou de pas de port du tout.
  3. J'ai ainsi une feuille qui sert à tester le noir, un qui sert à tester le blanc. Si c'est du bicolore, je fais les deux tests.
  4. Idem pour les ports. J'ai une feuille par option.
  5. Actuellement, on entre sur une page principale les différentes caractéristiques et selon les tests que l'on doit faire, les feuilles inutiles sont grisées.


 
Ce que j'aimerais vu que le document contient en réalité 18 feuilles, c'est pouvoir imprimer uniquement les feuilles dont j'ai besoin en une seule fois.
 
J'ai pensé à choisir une cellule, par exemple E5 qui serait toujours la même dans toutes les feuilles. Si je veux imprimer la feuille, je mets la valeur de la cellule à 1, sinon à 0.
 
Ensuite avec une petite moulinette j'imprime toutes les feuilles dans lesquelles la cellule E5 vaut 1.
 
Bah c'est pour la moulinette que je coince. J'y connais rien en VB, et c'est la seule chose dont j'ai besoin...
 
Voiloù, merci à celles et ceux qui auront pris le temps de me lire, et merci encore plus à celles et ceux qui me répondront :jap:
 
++


Message édité par jojozekil le 03-08-2009 à 15:59:11

---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Marsh Posté le 31-07-2009 à 15:34:46   

Reply

Marsh Posté le 03-08-2009 à 09:52:10    

Bonjour,
 
Je ne suis pas sur d'avoir bien compris tes besoins, mais si je ne me trompes pas, tu veux cliquer sur "impression" sur un des classeurs, et que ça imprime seulement les classeurs (ou les feuilles ? J'ai un doute, car tu parles d'un documents contenant plusieurs classeurs, pour moi ca signifie un classeur contenant plusieurs feuilles... Dans le doute, je laisse les deux) avec la cellule E5 à 1...
 
Il faut pour cela créer une macro (que tu peux attribuer à une combinaison de touche) qui va parcourir tout les classeurs (ou feuilles) et verifier la valeur de H5
 

Code :
  1. Sub PrintingChoose
  2. dim wb
  3. For each wb in workbooks 'ou worksheets si tu veux parcourir les feuilles au lieu des classeurs
  4.   if wb.activesheet.range("E5" ).value = 1 then 'tu verifies la valeur de la cellule E5 dans la feuille active lors de l'ouverture du classeur. pour le parcours des feuilles au lieu des classeurs, il faut juste enlever ".activesheet"
  5.     wb.printout 'Lance l'impression du classeur/ de la feuille. Fais juste attention à ce que l'imprimante par défaut soit active
  6.   end if
  7. next
  8. End Sub


 
Si le principe de la combinaison de touche pour activer ta macro te plait, regarde du coté de "application.onkey". Si tu veux plus de détails, n'hésite pas ;)
 
Voila, j'espère t'avoir aidé.


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 03-08-2009 à 16:32:12    

Merci pour ton aide, je vais tester dès que je reprends le taf, c'est à dire fin aout ^^
En tout cas, tu as mis le doigt sur quelque chose, mon explication était confuse, et j'ai corrigé.
Partout où je parlais de classeurs, je voulais dire feuilles (les petits onglets en bas du document quoi).
J'ai corrigé.


---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Marsh Posté le 28-08-2009 à 14:30:36    

Ca fonctionne nickel. Bravo à toi et merci beaucoup :jap:


---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Marsh Posté le 31-08-2009 à 09:31:07    

Si je puis me permettre d'abuser...
Chaque impression de feuille est lancée de manière indépendante. Avec une imprimante "classique" pas de soucis, mais si on veut faire du recto-verso ou plus simplement un fichier pdf, genre avec pdfcreator, c'est plus coton.
Obligé d'enregistrer chaque page dans un fichier pdf qui lui est propre puis de fusionner le tout. Pas très pratique.
 
Peut-on modifier l'algo de la manière suivante :
Algo actuel

Code :
  1. Je parcours les feuilles de mon classeur
  2.   DEBUT BOUCLE
  3.     Si M1=1 Alors j'imprime la feuille
  4.   FIN BOUCLE


 
Algo amélioré

Code :
  1. Je parcours les feuilles de mon classeur
  2.   DEBUT BOUCLE
  3.     Si M1=1 Alors j'ajoute la feuille courante à ma sélection à imprimer
  4.   FIN BOUCLE
  5. J'imprime ma sélection


---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Marsh Posté le 01-09-2009 à 20:38:13    

Il y a une chance que ça marche mais je ne peux pas le tester là.
 

Code :
  1. Private Sub Impression()
  2.     Dim wksFeuille      As Worksheet
  3.     Dim strSelection()  As String
  4.     Dim i               As Long
  5.    
  6.     i = 0
  7.     For Each wksFeuille In ThisWorkbook.Sheets
  8.         If wksFeuille.Range("E5" ).value = 1 Then
  9.             ReDim Preserve strSelection(i)
  10.             strSelection(i) = wksFeuille.Name
  11.             i = i + 1
  12.         End If
  13.     Next wksFeuille
  14.     Sheets(strSelection).Select
  15.     ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
  16. End Sub

Reply

Marsh Posté le 02-09-2009 à 10:30:07    

T'es un diable ! Ca marche encore mieux que l'ancienne méthode.
En effet je fais mes tests sur la case M1 de chaque page. Avec la première macro ça ne fonctionnait pas si M1 était verrouillée.
Maintenant ça ronronne.
 
Merci beaucoup. Si vous passez sur Créteil, je serais ravi d'étancher votre soif ;)


Message édité par jojozekil le 02-09-2009 à 10:30:39

---------------
Le topic de mon feedback ici - Je suis rarement connecté le WE - Mes ventes sont également sur d'autres sites/forums
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed