Excel/ impressions multiples bis

Résolu
benji71 Messages postés 789 Statut Membre -  
benji71 Messages postés 789 Statut Membre -
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///

4 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  2. benji71 Messages postés 789 Statut Membre 23
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
    2. benji71 Messages postés 789 Statut Membre 23
       
      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
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

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

      eric
      0
    4. benji71 Messages postés 789 Statut Membre 23
       
      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
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  3. benji71 Messages postés 789 Statut Membre 23
     
    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
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  4. benji71 Messages postés 789 Statut Membre 23
     
    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