Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

impression avec conditions

7 réponses
Avatar
marc
Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir écrit
celà sans certitudes et heureusement car ça ne marche pas, ça m'imprime
systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que 52...
Donc j'en appelle à votre savoir, pour me diriger vers une méthode plus
"efficace"

Merci de m'avoir lû

Marc

7 réponses

Avatar
E KERGRESSE
Salut Marc,

Utilise plutôt la commande Select Case

Sub Bouton7_Click()

Select case Sheets("recherche").Range("$Q$6").Value
case 1 to 33
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55"
case 34 to 66
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110"
case 67 to 99
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165"
case 100 to 132
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
End Select

Sheets("à_imprimer").PrintOut

End Sub


Cordialement

"marc" a écrit dans le message de news:

Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir écrit
celà sans certitudes et heureusement car ça ne marche pas, ça m'imprime
systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que
52...

Donc j'en appelle à votre savoir, pour me diriger vers une méthode plus
"efficace"

Merci de m'avoir lû

Marc




Avatar
papou
Bonjour
Modifie comme ça :
Sub Bouton7_QuandClic()
Select Case Worksheets("recherche").Range("$Q$6").Value
Case >1, <3
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55"
Case > 33 , <= 66
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110"
Case > 66 , <= 99
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165"
Case > 99 , <= 132
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
End select
Worksheets("à_imprimer").PrintOut
End Sub

Cordialement
Pascal


"marc" a écrit dans le message de news:

Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir écrit
celà sans certitudes et heureusement car ça ne marche pas, ça m'imprime
systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que
52...

Donc j'en appelle à votre savoir, pour me diriger vers une méthode plus
"efficace"

Merci de m'avoir lû

Marc




Avatar
marc
Merci Papou,

malheureusement, en applicant tes modifications ne s'est imprimée que la
première page.

Mais c'était déja beaucoup mieux que 4 pages dont 2 à blanc.

J'ai ensuite utilisé les modifications de E KERGRESSE qui fonctionne en
utilisant également Select Case.

Alors, d'accord ça fonctionne mais je ne comprends pas ce code. Si tu
pouvais m'expliquer vite fait le role de ce Select Case, ça me rendrait
service pour pouvoir le réemployer plus tard, voir, aider quelqu'un !

Merci



"papou" a écrit dans le message de
news:
Bonjour
Modifie comme ça :
Sub Bouton7_QuandClic()
Select Case Worksheets("recherche").Range("$Q$6").Value
Case >1, <3
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55"
Case > 33 , <= 66
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110"
Case > 66 , <= 99
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165"
Case > 99 , <= 132
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
End select
Worksheets("à_imprimer").PrintOut
End Sub

Cordialement
Pascal


"marc" a écrit dans le message de news:

Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir écrit
celà sans certitudes et heureusement car ça ne marche pas, ça m'imprime
systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que
52...

Donc j'en appelle à votre savoir, pour me diriger vers une méthode plus
"efficace"

Merci de m'avoir lû

Marc








Avatar
marc
Merci Eric, ça fonctionne parfaitement,

Mais je ne connais pas Select Case, alors, si tu peux m'en dire plus !


"E KERGRESSE" a écrit dans le message
de news:%
Salut Marc,

Utilise plutôt la commande Select Case

Sub Bouton7_Click()

Select case Sheets("recherche").Range("$Q$6").Value
case 1 to 33
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55"
case 34 to 66
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110"
case 67 to 99
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165"
case 100 to 132
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
End Select

Sheets("à_imprimer").PrintOut

End Sub


Cordialement

"marc" a écrit dans le message de news:

Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir écrit
celà sans certitudes et heureusement car ça ne marche pas, ça m'imprime
systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que
52...

Donc j'en appelle à votre savoir, pour me diriger vers une méthode plus
"efficace"

Merci de m'avoir lû

Marc








Avatar
E KERGRESSE
Salut Marc,

Le mieux pour commencer en VBA, c'est d'utiliser à fond la touche F1 dans
l'éditeur VBA après avoir sélectionné le mot Select Case par exemple. Tout y
est expliqué. C'est la première chose à faire.

Tu auras accès aux explications sur le fonctionnement de la commande. Il y a
souvent des exemples pour mieux comprendre. Au départ, c'est pas facile pour
tout comprendre mais avec l'habitude ça vient.

Les questions sur ce forum sont souvent récurrentes, n'hésite pas non plus
à t'aider du module de recherche de ton navigateur, pour rechercher les
thèmes qui te posent problème. Par contre, il te faudra fréquemment
consulter le site si tu veux progresser rapidement, (je n'avais pas la
chance d'avoir Internet quand j'ai commencé).

Par ailleurs, il y a plein de sites intéressants que tu dois connaître et en
premier lieu http://www.excelabo.net/index.php

Ce site te permet après, d'accéder à d'autre sites tout aussi intéressants
parfois avec leurs spécialités, tu apprendras vite à les repérer et à les
mettre dans tes favoris car souvent tu y trouveras rapidement la réponse à
tes questions.

Content d'avoir pu t'aider.

Cordialement.

"marc" a écrit dans le message de news:

Merci Eric, ça fonctionne parfaitement,

Mais je ne connais pas Select Case, alors, si tu peux m'en dire plus !


"E KERGRESSE" a écrit dans le
message

de news:%
Salut Marc,

Utilise plutôt la commande Select Case

Sub Bouton7_Click()

Select case Sheets("recherche").Range("$Q$6").Value
case 1 to 33
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55"
case 34 to 66
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110"
case 67 to 99
Sheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165"
case 100 to 132
Sheets("à_imprimer").PageSetup.PrintArea "$A$1:$Q$220"
End Select

Sheets("à_imprimer").PrintOut

End Sub


Cordialement

"marc" a écrit dans le message de news:

Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir
écrit



celà sans certitudes et heureusement car ça ne marche pas, ça
m'imprime



systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que
52...

Donc j'en appelle à votre savoir, pour me diriger vers une méthode
plus



"efficace"

Merci de m'avoir lû

Marc












Avatar
AV
Pourquoi pas comme ça :

Sub zz_Imprim()
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$" _
& [index({55,110,165,220},match(Q6,{0,34,67,100,133},1))]
Worksheets("à_imprimer").PrintOut
End Sub

PS : tu peux adapter les bornes dans le index/match
AV
Avatar
Robert
Salut,
Pour Select Case, peut-être ici:
http://ndailly.free.fr/basic/case.html
A+

"marc" a écrit dans le message de
news:
Merci Papou,

malheureusement, en applicant tes modifications ne s'est imprimée que la
première page.

Mais c'était déja beaucoup mieux que 4 pages dont 2 à blanc.

J'ai ensuite utilisé les modifications de E KERGRESSE qui fonctionne en
utilisant également Select Case.

Alors, d'accord ça fonctionne mais je ne comprends pas ce code. Si tu
pouvais m'expliquer vite fait le role de ce Select Case, ça me rendrait
service pour pouvoir le réemployer plus tard, voir, aider quelqu'un !

Merci



"papou" a écrit dans le message de
news:
Bonjour
Modifie comme ça :
Sub Bouton7_QuandClic()
Select Case Worksheets("recherche").Range("$Q$6").Value
Case >1, <3
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55"
Case > 33 , <= 66
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110"
Case > 66 , <= 99
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165"
Case > 99 , <= 132
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
End select
Worksheets("à_imprimer").PrintOut
End Sub

Cordialement
Pascal


"marc" a écrit dans le message de news:

Bonjour à tous,
Je cherche à imprimer des planches d'étiquettes avec une macro.
Chaque planche contient 33 étiquettes.
J'ai placé un pointeur conptant le nombre d'étiquettes remplies sur ma
feuille "recherche" en Q6.
J'ai écris la macro suivante :

Sub Bouton7_QuandClic()
If Worksheets("recherche").Range("$Q$6") > 1 <= 33 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$55" Else
If Worksheets("recherche").Range("$Q$6") > 33 <= 66 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$110" Else
If Worksheets("recherche").Range("$Q$6") > 66 <= 99 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$165" Else
If Worksheets("recherche").Range("$Q$6") > 99 <= 132 Then
Worksheets("à_imprimer").PageSetup.PrintArea = "$A$1:$Q$220"
Worksheets("à_imprimer").PrintOut
End Sub


Débutant en la matière depuis lundi, je suis humble et avoue avoir
écrit



celà sans certitudes et heureusement car ça ne marche pas, ça
m'imprime



systématiquement 4 pages. Alors que mon compteur Q6 N'en dénombre que
52...

Donc j'en appelle à votre savoir, pour me diriger vers une méthode
plus



"efficace"

Merci de m'avoir lû

Marc