Zone d impression par date

Résolu
Bonjour,

j'ai besoin d'une aide, n"étant pas très a l'aise avec vba je ne sais pas comment programmer une macro pour définir une zone d' impression par date du jour qui se trouve en colonne A, en B les articles produits, en C la localisation, en D la date de fabrication et en E la quantité un tri par article du plus ancien au plus récent en laisant une ligne vide entre chaque serie d articles et en sachant que je rajoute des arcticles divers au dédut de la listeset lorsque la quantité est a zero , que la ligne soit suprimer.

merci d' avance

6 réponses

  1. Bonjour kit24be,

    Le plus est de trier par date, et seulement après on définit la zone d'impression.
    1. Bonjour,

      le probleme lorsque je les tris par date, je doit trier groupe d articles par groupe d articles pour pouvoir garder une ligne vierge entre chaque serie d articles

      merci pour ta réponse
      1. Pourquoi garder une ligne vide par "série d'articles" ??
      2. Pour différencier plus facilement les différents groupe etant données qu il y en a plus d une centaine et que ce soit lisible facilement pour les personnes qui font l inventaire
      3. Je ne comprends pas tout avec tes groupe .. dommage car j'avais une macro qui trie par date, sélectionne la zone d'impression et imprime d'un seul coup.
        Une autre fois, je serai peut-être utile ..
      4. peux tu me la publier, je vais voir ce que je peut faire. cela me donnera une idée et essayer sans les lignes vierges
        et je te dit un grand merci pour tes réponses
    2. Bonjour,

      Une autre façon de faire est de ne pas toucher au tableau original, mais de travailler sur une copie .. la macro fait une copie de l'onglet 'Feuil1', travaille sur cette copie et détruit la copie quand l'impression est terminée.
      Qu'en penses-tu ?
      1. je suis ouvert a toutes les suggestions, mais je ne comprend pas bien ce que tu veux dire
        1. Désolé pour le retard .. voici un code

          Option Explicit 
          
          Sub Imprimer() 
              Dim DatePre As Date 
              Dim DateDer As Date 
              ' 
              Dim LigPre As Integer, LigDer As Integer 
              Dim ColPre As Integer, ColDer As Integer 
              Dim LigPre_Select As Integer, LigDer_Select As Integer 
              Dim i As Integer 
              Dim DateLue As Date 
              ' 
              LigPre = 2 
              ColPre = 1: ColDer = 5 
              ' récupérer les dates 
              Worksheets("Feuil2").Select 
              DatePre = Cells(1, 2).Value 
              DateDer = Cells(2, 2).Value 
              If ((DatePre < "01/01/2012") Or (DatePre < Now)) Then Exit Sub 
              ' 
              ' sélectionner la feuille 
              Worksheets("Feuil1").Select 
              ' sélectionner les colonnes 
              Columns("A:E").Select 
              ' trier les colonnes par date 
              Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _ 
                  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
                  DataOption1:=xlSortNormal 
              ' définir la dernière ligne non-vide 
              LigDer = Range("A" & Rows.Count).End(xlUp).Row 
              ' définir la valeur des variables lignes 
              LigDer_Select = 0 
              LigPre_Select = (LigDer + 1) 
              ' mémoriser les lignes à imprimer 
              For i = LigPre To LigDer 
                  DateLue = Cells(i, 1).Value 
                  If ((DateLue >= DatePre) And (DateLue <= DateDer)) Then 
                      If (i < LigPre_Select) Then LigPre_Select = i 
                      If (i > LigDer_Select) Then LigDer_Select = i 
                  End If 
              Next i 
              ' sélection de la plage 
              Range(Cells(LigPre_Select, ColPre), Cells(LigDer_Select, ColDer)).Select 
              ' sélectionner la plage d'impression 
              ActiveSheet.PageSetup.PrintArea = Selection.Address '"$A$5:$E$6" 
              ' imprimer 
              ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True 
              ' sélectionner une cellule 
              Range("A1").Select 
          End Sub


          Tires-en ce que tu peux et n'hésite pas si t'a des questions.

          Edit:
          Sur la "feuil2", écrire la date de départ en "B1" et la date de fin en "B2".
          1. un grand merci pour ta macro, j ai un souci j ai mis les date en b1 et b2 mais elle ne fait que changer de page je te met ci joint le lien en sachant que je travail avec excel 2010
            https://www.cjoint.com/?3AntyGDu5mr

            merci
          2. Bonsoir kit24be,

            Ton lien marche super .. mais vide de macro !!
          3. oui j ai du la supprimer avant de te l envoyer
        2. Autre possibilité:

          Dans le menu,
          Données, Filtrer, Filtre automatique ..

          Tu sélectionne la date, tu imprime avec la ligne de titre .. + simple qu'une macro !!
          1. j avais déja essayé, mais il me faut le moins de manipulation possible vu le nombre de personnes qui l utiliserons beaucoup ne connaissent pas bien excel
            et un trés grand merci, tu m as bien aidé