Excel/ impressions multiples bis

Résolu/Fermé
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 - 20 août 2011 à 11:03
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 - 25 août 2011 à 21:36
Bonjour à tous et ttes,


j'espere que vous allez bien et que le week-end s'annonce positif.

je me permets de faire appelle à vous car j'ai un petit problème à vous soumettre.

je joins le fichier sur lequel plus d'explication se trouve (feuille mcae_gril_prev) :
https://www.cjoint.com/?3Huk72EI2bT

mais sachez que cela à voir avec le post précédent et que cela concerne la mise en place de date de début et date de fin à placer sur uen feuille. cette même feuille contient un tableau sur lequel les dates d'un mois complet est indiquée. ce que je cherche à faire c'est donc de pouvoir imprimer en une seul opération plusieurs feuilles avec chaque fois un mois différent.

vous remerciant grandement pour vos suggestions, remarques et critiques.

bon temps de midi.

berni///



A voir également:

4 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
20 août 2011 à 20:34
Bonsoir,

Pour l'impression :
Sub imprimer()
    Dim nmois As Long, mois As Long, année As Long, m As Long
    nmois = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 3)
    mois = Month([A20])
    année = Year([A20])
    For m = 1 To nmois
        MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
        'Worksheets("mcae_gril_prév.").PrintOut
        mois = mois Mod 12 + 1
        année = année - (mois = 1)
        [A20] = DateValue("01/" & mois & "/" & année)
    Next m
End Sub

Le nombre de mois à imprimer est demandé au début de la macro.
Une fois les tests faits enlever le commentaire du .printout et le mettre sur le msgbox.

eric
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
21 août 2011 à 11:41
Bonjour cher Eriic,

j'espere que vous allez bien. merci d'avoir eu la gentillesse de repondre à mon problème.

je n'ai pas d'imprimante à la maison, je vais donc essayé cela au bureau dès demain mais j'ai une petite question, lorsque j'aurais placé la macro, celle-ci va s'appliquer dès que je vais dder à imprimer [donc, lorsque je clic sur la l'icone "imprimer" correct ?

si j'ai tjrs bien compris, je ne dois donc pas coller la marco à un bouton que j'aurais créé.

pour être sur de ne pas commettre de "boulette" voici ce que vous me proposez de tester :
Sub imprimer()

Dim nmois As Long, mois As Long, année As Long, m As Long
nmois = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 3)
mois = Month([A20])
année = Year([A20])
For m = 1 To nmois
MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
'Worksheets("mcae_gril_prév.").PrintOut
mois = mois Mod 12 + 1
année = année - (mois = 1)
[A20] = DateValue("01/" & mois & "/" & année)
Next m
End Sub


uen fois que cela marche je peux donc ecrire comme ceci :
Sub imprimer()

Dim nmois As Long, mois As Long, année As Long, m As Long
nmois = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 3)
mois = Month([A20])
année = Year([A20])
For m = 1 To nmois
'MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
Worksheets("mcae_gril_prév.").PrintOut
mois = mois Mod 12 + 1
année = année - (mois = 1)
[A20] = DateValue("01/" & mois & "/" & année)
Next m
End Sub


je dois donc déplacer la ' de la ligne :Worksheets("mcae_gril_prév.").PrintOut
pour la mettre devant la ligne : 'MsgBox ("impression de " & Format([A20], "mmm/yyyy"))


correct ?

un tt grand merci à vous et de l'aider apporté.

tres bon dimanche...

berni ///
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
21 août 2011 à 12:06
Bonjour,

celle-ci va s'appliquer dès que je vais dder à imprimer [donc, lorsque je clic sur la l'icone "imprimer" correct ?
non, je n'ai pas redirigé les impressions. Actuellement il faut l'appeler par un bouton.

Si tu veux rediriger les impressions il faut utiliser l'évènement Workbook_BeforePrint() et tester la feuille :
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If ActiveSheet.Name = "mcae_gril_prév." Then
        Cancel = True
        Dim nmois As Long, mois As Long, année As Long, m As Long
        nmois = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 3)
        If nmois > 1 And nmois <= 12 Then
            mois = Month([A20])
            année = Year([A20])
            For m = 1 To nmois
                'Worksheets("mcae_gril_prév.").PrintOut
                MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
                mois = mois Mod 12 + 1
                année = année - (mois = 1)
                [A20] = DateValue("01/" & mois & "/" & année)
            Next m
        Else
            MsgBox ("Saisie non conforme")
        End If
    End If
End Sub

Dans ce code j'ai ajouté le contrôle de la saisie que j'avais oublié :
        If nmois > 1 And nmois <= 12 Then
            ....
        Else
            MsgBox ("Saisie non conforme")
        End If

A ajouter dans l'autre code....

je dois donc déplacer la ' de la ligne :Worksheets("mcae_gril_prév.").PrintOut
pour la mettre devant la ligne : 'MsgBox ("impression de " & Format([A20], "mmm/yyyy"))

Tout à fait.
Avant ça te permet de lister ce qui sera imprimé, mais sans impression (donc sans imprimante aussi)

eric
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
22 août 2011 à 08:28
Bonjour Eriic,

j'espere que vous allez bien. permettez-moide vous remercier pour votre réponse.
j'ai essayé au bureau le code du post du 20/08..cela semble marché... :-)... je suis ravi... cela va me faire gagner du temps..et surtout bcp de manipulation "inutile".. :-)

sans vouloir "abuser" et comme les idées viennent au fur et à mesure...j'aimerais pouvoir imprimer chaque mois en deux exemplaires successif...est-il possible d'introduire ds la code macro que chaque impression soit faite deux fois..?

je vous souhaite une bon debut de semaine..

tres cdlmnt,

berni///
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
22 août 2011 à 12:14
Bonjour,

à tester :
Worksheets("mcae_gril_prév.").PrintOut Copies:=2

eric
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
22 août 2011 à 22:24
Bonsoir eriic,

j'espere que vous allez bien. j'ai essayé votre propositiond emacro et cela semble marcher à merveille...je fais encore des essais demain et si c'est concluant ..alors..chapeau et merci car cette petite application me fait gagner bcp de temps...

je vais en parrallèle essayé de l'appliquer sur une autre feuille..qui contient les m^mes infos mais pas disposer de la même manière...je vous dis quoi demain...

tres belle soirée..;et bonne nuit à vous..

merci pr tt..

berni///
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
22 août 2011 à 22:52
comme tu sembles être resté sur le 1er code n'oublie pas d'ajouter le contrôle de saisie dont je te parlais à la fin du post 3
bonne soirée à toi aussi :-)
eric
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
23 août 2011 à 21:28
Bonsoir cher Eriiic,

j'espere que vous allez bien et que vous avez passé une bonne journée.

un petit mot sur "comme tu sembles être resté sur le 1er code "je suis revenu sur le premier code car j'ai l'impression de "maitriser" les choses...et que au bureau j'ai le choix entre 3 imprimantes (dont un couleur) donc je me suis dit que se serait mieux de garder les premiers code.

je reviens sur le "n'oublie pas d'ajouter le contrôle de saisie dont je te parlais à la fin du post 3"

si je vous ai bien, le bon code est celui-ci :

Sub imprimer_()
Dim nmois As Long, mois As Long, année As Long, m As Long
nmois = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 3)
If nmois > 1 And nmois <= 12 Then
mois = Month([A20])
année = Year([A20])
For m = 1 To nmois
'MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
Worksheets("mcae_gril_prév.").PrintOut copies:=2
mois = mois Mod 12 + 1
année = année - (mois = 1)
[A20] = DateValue("01/" & mois & "/" & année)
Next m
Else
MsgBox ("Saisie non conforme")
End If

End Sub

correct ?

mais à propos à quoi doit servir le :

If nmois > 1 And nmois <= 12 Then
....
Else
MsgBox ("Saisie non conforme")
End If

je veux dire qu'elle sera sa fonction ?

j'ai rencontré un petit problème.
si je clic sur le bouton imprimer (celui sur lequel j'ai affecté la macro), la boîte à message s'ouvre et me demande combien de mois...si je clic sur annuler...j'ai un message "erreur d'excécution'13' incompatibilité de type"

ai-je fait une erreur ? à quoi cela peut-il être du ?

vs remerciant pour votre aide et précieux conseil, je vous souhaite une bonne soirée, nuit...

cdlmnt,

berni///
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 211
23 août 2011 à 22:59
Bonsoir,

Tes 2 questions en font une.
mais à propos à quoi doit servir le : ...
C'est le contrôle de saisie mais je l'ai mal fait et non complet, d'où ton autre erreur.

Avec celui-ci ça sera plus correct :
Sub imprimer_()
    Dim nmois As Long, mois As Long, année As Long, m As Long, saisie As String
    saisie = InputBox("Nombre de mois à imprimer ?", "Nombre de mois", 3)
    If IsNumeric(saisie) Then
        nmois = CLng(saisie)
        If nmois > 12 Then nmois = 12
        mois = Month([A20])
        année = Year([A20])
        For m = 1 To nmois
            MsgBox ("impression de " & Format([A20], "mmm/yyyy"))
            ' Worksheets("mcae_gril_prév.").PrintOut copies:=2
            mois = mois Mod 12 + 1
            année = année - (mois = 1)
            [A20] = DateValue("01/" & mois & "/" & année)
        Next m
    Else
        MsgBox ("Saisie non conforme")
    End If
End Sub

L'impression est limitée à 12 mois maxi.
eric
0
benji71 Messages postés 738 Date d'inscription samedi 22 mars 2008 Statut Membre Dernière intervention 4 janvier 2015 23
25 août 2011 à 21:36
Bonsoir cher Eriiic,

comme promis..Me revoici....et comme promis..Cela marche.. je suis super content... :-)

j'ai essayé à plusieurs reprises et cela focntionne..

un tt grand merci à vous...

cdlmnt,

berni///
0