Zone d impression par date

Résolu
kit24be Messages postés 48 Statut Membre -  
kit24be Messages postés 48 Statut Membre -
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. Heliotte Messages postés 1561 Statut Membre 92
     
    Bonjour kit24be,

    Le plus est de trier par date, et seulement après on définit la zone d'impression.
    0
  2. kit24be Messages postés 48 Statut Membre 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
    0
    1. Heliotte Messages postés 1561 Statut Membre 92
       
      Pourquoi garder une ligne vide par "série d'articles" ??
      0
    2. kit24be Messages postés 48 Statut Membre 1
       
      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
      0
    3. Heliotte Messages postés 1561 Statut Membre 92
       
      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 ..
      0
    4. kit24be Messages postés 48 Statut Membre 1
       
      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
      0
  3. Heliotte Messages postés 1561 Statut Membre 92
     
    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 ?
    0
  4. kit24be Messages postés 48 Statut Membre 1
     
    je suis ouvert a toutes les suggestions, mais je ne comprend pas bien ce que tu veux dire
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Heliotte Messages postés 1561 Statut Membre 92
     
    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".
    0
    1. kit24be Messages postés 48 Statut Membre 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
      0
    2. Heliotte Messages postés 1561 Statut Membre 92
       
      Bonsoir kit24be,

      Ton lien marche super .. mais vide de macro !!
      0
    3. kit24be Messages postés 48 Statut Membre 1
       
      oui j ai du la supprimer avant de te l envoyer
      0
  7. Heliotte Messages postés 1561 Statut Membre 92
     
    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 !!
    0
    1. kit24be Messages postés 48 Statut Membre 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é
      0