[VBA] Zone d'impression Excel

Résolu/Fermé
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 - Modifié par Isomer le 12/04/2011 à 17:22
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 - 21 avril 2011 à 18:03
Bonjour,

Je sais qu'il existe de nombreux postes à ce propos mais je n'arrive pas à trouver mon bonheur dans l'existant. Surtout que je ne m'y connait guère en macro.

Voici ma question :

J'ai un devis de réaliser sur Excel pouvant aller de 1 à 200 lignes. Chaque pages contient 40 lignes, soit un devis pouvant aller de 1 à 5 pages.
J'aimerais que la zone d'impression se sélectionne à partir d'une formule qui me dit si une valeur est égal à zéro ou pas. Puis lorsque l'on appuis sur le bouton la sélection s'imprime et s'enregistre.

Exemple :
Devis 1 de 40 lignes : Si "40 lignes" alors on imprime une page
Devis 2 de 41 lignes : Si "41 lignes" alors on imprime deux pages

Merci d'avance
Isomer

PS : Je sais pas faire un bouton sur excel... xD


A voir également:

22 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
12 avril 2011 à 11:33
Bonjour,
Il faudrait que tu précise un peu,
Tu met tout sur la même feuille ou bien tu crée une feuille chaque fois que tu a 40 lignes ?
A+
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
12 avril 2011 à 15:58
Bonjour,

Oui excusez moi.

Non, les 5 pages sont sur la même feuille. Quand je parle d'une page, je parle d'un découpage de la sélection d'impression qui est de 1 page en largeur et 1 à 5 pages en longueur.

Besoin d'autres informations ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 14/04/2011 à 13:22
Oui, avant de cogiter une macro,
Tu à une entête fixe ?
Il n'y a pas d'espace entre tes lignes ?
Et si je comprend bien tu devrais avoir entre disons.. 40 et 200 lignes l'une en dessous de l'autre.
Tu à une entête répétitive ? .. pour comprendre, si tu imprime en "manuel", tu change uniquement la plage d'impression ?
Si c'est comme ça, une macro pour imprimer le nombre de pages utiles n'est pas un problème.
Tu dis.
peut-être avec ce code à adapter...
Sub PrintDevis()
Dim Lig As Integer
Const Colonnes = 5 'adater au nombre de colonne
Const Ligne1 = 3 'Première ligne où commencer
    Sheets("feuil1").Select 'adapter le nom de la feuille
    For Lig = Ligne1 To [C65536].End(xlUp).Row Step 40
        ActiveSheet.PageSetup.PrintArea = Range(Cells(Lig, 1), Cells(Lig + 39, Colonnes)).Address
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
    Next Lig
End Sub

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
14 avril 2011 à 13:24
Bonjour,

Oui j'ai une entête répétitive et un bas de page aussi qui se répète mais donc la valeur total de ma page devis change en fonction des valeurs des lignes des devis, cela va de soit.
Non j'ai pas d'espace entre mes lignes et oui si j'imprime en manuel je change juste la plage d'impression en hauteur (en largeur elle ne bouge jamais).

J'aimerais que ma macro fonctionne comme cela :

Si D100 <>0 alors zone d'impression de A1 à D101
Si D200 <>0 alors zone d'impression de A1 à D201
Etc.

Mes pages sont calibrés de tel sorte que la zone d'impression se calibre comme il le faut. Je ne sais pas si je suis assez clair ^^.

Merci d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 avril 2011 à 13:29
Up, croisement de poste, regarde mon poste précédant que je viens de mofifier
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
14 avril 2011 à 17:31
Merci, mais ça me met un message d'erreur.

Erreur d'exécution '9'
L'indice n'appartient pas à la sélection

Que dois-je faire ?

Sinon on peut pas déclencher la zone de sélection lorsque B7 (par exemple est différent de 0 ?

Encore merci :)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 avril 2011 à 23:24
sur quel ligne ?
0
ethernel Messages postés 1 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 14 avril 2011
14 avril 2011 à 23:35
Bonjour à vous tous,

désolé de vous déranger, mais je galere avec exel, et je suis vraiment nulle sur tout ce qui concerne les macros, Bref..
je souhaiterais recopier des informations d'une feuille à l'autre tout en gardant la même mise en forme, même couleur, même remplissage etc. sur excel 2003.
En fait je voudrais que les infos de la feuille A se retrouve automatiquement dans la feuille B tout en gardant la même couleur de fond, la même police, couleur de police etc. La mise en forme en fait! J'ai des formules du style : « =SI(janvier!C6<>"";janvier!C6;"") » j'ai le bon texte qui se retrouve dans la case (logique) mais la mise en forme, est différente de l'original et je n'arrive pas à garder la mise en forme de la cellule souche...Est-ce possible???


Merci d'avance de vos réponses
NB: cé uuuurgent
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 avril 2011 à 23:53
prochaine fois crée ton topic...
Sub copier()
    
    Sheets("Feuil1").Range("A1:C16").Copy 'adapter la plage à copier
    
    Sheets("Feuil2").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlFormats
    Selection.PasteSpecial Paste:=xlValues
End Sub

A+
0
un grand merci pour toi lermite,
ton programme m'a vraiment servi,
et excusez moi pour le derangement, c'été ma premier fois que j'écris sur ce forum et je savais pas comment créer un topic


A+
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
15 avril 2011 à 11:58
C'est pas sur une ligne c'est dans VBA lorsque je compile...
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 15/04/2011 à 12:30
Bien sur que c'est dans VBA. :-)
Et tu "compile" pas.. tu exécute la macro.
Tu a bien adapter le nom de la feuille ??, remplacer "Feuil1" par le nom de l'onglet.
Et met le code dans un module public, Insertion >> Module
Et pour info, quand tu a un message d'erreur, dans le code il y a une ligne surlignée en jaune... C'est cette ligne là qui est en erreur. Et probablement que c'est la ligne en question qui génère cette erreur.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
Modifié par Isomer le 15/04/2011 à 14:15
Merci beaucoup de votre patience, ça fonctionne bien. Je ne l'avais pas mis dans un module et pas bien mis le nom de la feuil. Et oui la ligne c'est bien surligné en jaune lors du débogage...

Mais... Oui parce qu'il y a un mais....

Actuellement dès que j'active la macro il me lance l'impression 5 ou 6 fois, j'aimerais que la macro se lance avec un bouton et qu'une seule fois si possible.

En tout cas merci infiniment pour votre aide, vous aurez remarqué je ne suis pas très fort en VBA. Enfin on peut pas être bon partout...

Encore merci ! :)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 avril 2011 à 15:19
Normalement la macro ne s'exécute qu'une seule fois.. c'est que ta façon de la "lancer" n'est pas bonne !!
Pour le faire avec un bouton,
Je vais tout prendre depuis le début ..
Zut, tu n'a pas dis ta version d'Excel, pour éviter de recommencer.. Tu dis.
Version Excel ?
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
15 avril 2011 à 16:56
version 2003

Merci beaucoup !!
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 avril 2011 à 17:11
OK, avec le > 2003 c'est différent.
Clic sur... Affichage >> Barre d'outils >> Boite à outils controls.
Dans la barre d'outils affichée tu clic sur ..Bouton de commande, dans la feuille Excel tu créer un rectangle qui sera le bouton.
Changer le libellé du bouton, clic droit >> propriétés
Changer le caption par exemple par "Imprimer"
Fermer la fenêtre propriétés. (la croix)
Double clic sur le bouton que tu viens de créer.
Tu arrive dans l'IDE de VBA sur le code de la feuille (l'onglet)
avec un début de code qui devrait ressembler à..
Private Sub CommandButton1_Click()

End Sub


au milieu de ce code tu tape.. PrintDevis pour avoir..
Private Sub CommandButton1_Click()
    PrintDevis
End Sub

C'est tout.. tu retourne sur Excel, tu clic sur le bouton 'désactiver le mode de création' sur la barre d'outils Contrôle (le triangle bleu,vert)
Et Opppss, c'est terminer.
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
15 avril 2011 à 18:37
C'est trop cool ^^

Alors l'impression ça va impec sauf que en faites, il m'imprime les feuilles une par une.

Je m'explique si mon devis fait 3 pages il va m'imprimer les 3 pages dans des pdf différents... C'est pour ça les enregistrement successif...

Désolé, je sais que je suis agaçant... :S

Encore merci pour votre aide, merci beaucoup lermite !

NB : Désormais je ne pourrais répondre que lundi ou mardi, donc bon week end :D
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 avril 2011 à 18:51
Je m'explique si mon devis fait 3 pages il va m'imprimer les 3 pages dans des pdf
Là je comprend plus..
A la semaine prochaine.
A+
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
Modifié par Isomer le 15/04/2011 à 19:04
En faites je suis pas encore parti ^^

Bah lorsque j'imprime mon devis au lieu de m'enregistrer un devis PDF de 3 pages, il m'enregistre le devis page par page dans des PDF différent. C'est à dire j'ai la page 1 de mon devis dans le pdf 1, ma page 2 dans le pdf 2, etc.

Hors j'aimerais avoir mes 3 pages dans le même PDF. C'est plus clair ?
0
Isomer Messages postés 40 Date d'inscription mercredi 30 mars 2011 Statut Membre Dernière intervention 2 octobre 2011 4
21 avril 2011 à 14:10
Toujours avec moi ? ^^
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
21 avril 2011 à 16:46
Beh éventuellement, mais là.. je sais plus où j'en suis. C'est quoi cette histoire de PDF ?
0