IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création macros pour tri et impression


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Points : 19
    Points
    19
    Par défaut Création macros pour tri et impression
    Bonjour a tous,

    Après moulte recherche sur divers forums, je n'arrive toujours pas a solutionner mon problème...

    Je travail pour une entreprise de production bois. Nous disposons d'un tableau excel regroupant toutes les opérations d'usinage à réaliser.

    Toutes les semaines, nous communiquons aux opérateurs la liste des pièces à produire.

    Une fois ma liste triée (par tache), j'obtiens ceci:
    Nom : Capture.JPG
Affichages : 596
Taille : 147,3 Ko

    A partir de ceci, j'aimerai créer une marco permettant de lancer une impression feuille par feuille de chaque tache.
    je ne connais pas le cheminiement pour y parvenir, peut être que la création d'une feuille excel pour chaque tache permettera de facilité l'impression...

    Dans l'exemple ci-dessus, 3 feuilles doivent sortir...

    Vous trouvez un extrait de ce tableau. A noté que l'ensemble des pièces représente environ 2000 lignes

    Etant donné que mes connaissance dans ce domaine reste très limité, je solicite votre aide pour m'aiguiller dans la création de cette macro.

    J'espère que mon message est clair, n'hésitez pas à me poser des questions pour plus d'informations...

    Merci d'avance,

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juillet 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Bonjour !

    Tout d'abord, pourquoi souhaites tu mettre certaines tâches sur la même feuille alors que tu souhaites aussi imprimer une feuille pour chaque tâche ?
    (exemple : feuille 2 : tâche 1303 et tâche 1305)

    Comme piste de réflexion, je te propose un compteur qui calculera le nombre de tâches identiques consécutives. Il suffira ensuite d'imprimer la plage en conséquence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Compter()
     
    Dim compteur As Integer
    Dim Limbasse As Integer
     
    compteur = 1
    Limbasse = Columns(4).End(xlDown)
     
    For i = 2 To Limbasse
        If Range("D" & i).Value = Range("D" & i).Offset(1, 0) Then
        compteur = compteur + 1
        Else: MsgBox compteur
        compteur = 1
        End If
    Next
     
     
    End Sub
    La MsgBox te donne à chaque fois le nombre de tâches identiques consécutives.

    Et voilà pour la solution complète !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub Imprimer()
     
    Dim compteur As Integer
    Dim Limbasse As Integer
     
    compteur = 1
    Limbasse = Columns(4).End(xlDown)
     
    For i = 2 To Limbasse
        If Range("D" & i).Value = Range("D" & i).Offset(1, 0) Then
        compteur = compteur + 1
        Else: Dim dif As Integer
        dif = i - compteur + 1
        Set Plage = Range("A" & dif & ": G" & i)
        Plage.PrintOut
        compteur = 1
        End If
    Next
     
     
    End Sub
    Il faut également que tu ailles dans Fichier --> Mise en Page --> Onglet "Feuille" et sélectionner la première ligne pour que celle-ci soit imprimée à chaque fois avec le reste des données correspondant à chaque tâche.

    N'hésite pas si tu as des questions !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    Bonjour Quentin !

    Tout d'abord merci pour ton aide.

    Ta solution me convient parfaitement, je viens de tester la marcos avec le fichier global de gestion, tout marche à la perfection.

    J'avais belle et bien fait une erreur sur ma capture, c'est bien une tache par feuille...

    Pour ce qui est de la première ligne j'avais déja défini une impression auto
    Etant donné que je suis un peu perdu dans ce domaine , je te remercie pour le temps que tu m'as accordé.

    Pour info j'ai trouver également une autre solution: La création d'un macro qui effectue un saut de page à chaque changement de numéro.

    Merci encore, et à bientot.
    Joris LEMONDE

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juillet 2015
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2015
    Messages : 32
    Points : 25
    Points
    25
    Par défaut
    Super ! Je suis heureux que ça puisse te servir !

    Peux-tu passer le sujet en "Résolu" pour que tout le monde sache que la solution a été trouvée ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Ce code permet de définir une zone d’impression, de définir la ligne devant servir comme entête de colonne sur chaque pages imprimé ! D’effectué un saut da page à chaque changement de tâche ! Et d’imprimer la totalité due document en une seule passe !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub Test()
    Dim r As Range, T As String, I As Integer
    'Supprime la mise en page actuelle (Zone d’impression, sauts de pages) !
    Sheets("Feuil1").PageSetup.PrintArea = ""
    Sheets("Feuil1").ResetAllPageBreaks
    '..............................................................................................................
    Set r = Sheets("Feuil1").UsedRange 'Défini les cellules de la page !
    ZoneImpression Sheets("Feuil1"), r
    ZoneTitre Sheets("Feuil1"), "1"
    For I = 2 To r.Rows.Count
        If T = "" Then T = UCase(r(I, 4)) 'Permet l'insertion de ligne aux changement de tâche !
        If T <> UCase(r(I, 4)) Then SautLigne Sheets("Feuil1"), r(I, 1): T = UCase(r(I, 4))
    Next
    r.PrintOut
    End Sub
    Sub SautLigne(Feuille As Worksheet, r As Range)
    Feuille.HPageBreaks.Add Before:=r 'Perme de définir les sauts de ligne !
    End Sub
    Sub ZoneTitre(Feuille As Worksheet, Adresse As String)
    Feuille.PageSetup.PrintTitleRows = Adresse & ":" & Adresse 'Permet de répéter la zone de titre sur toutes les pages
    End Sub
    Sub ZoneImpression(Feuille As Worksheet, r As Range)
    Feuille.PageSetup.PrintArea = r.Address 'Permet de définir la zone d'impression d'une feuille Excel !
    End Sub
    Dernière modification par Invité ; 07/10/2015 à 11h13.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Menuisier
    Inscrit en
    Octobre 2015
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Menuisier
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2015
    Messages : 38
    Points : 19
    Points
    19
    Par défaut
    J'ai finalement opté pour cette solution avec la création de saut de page.

    Je voudrais savoir s'il est possible de faire apparaitre la somme d'une colonne propre à chaque page qui vont être imprimée.

    Par exemple pour la première tache, la durée prévue est de 1h, la deuxième 4h etc. Je voudrais faire apparaitre cette valeur dans l'entête de chaque feuille.

    Merci encore pour votre aide.

Discussions similaires

  1. [XL-2007] macro pour tri
    Par Bernardf57 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 06/02/2011, 12h15
  2. [Toutes versions] Création Macro pour supprimer des lignes après tests conditionnels
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 14/01/2011, 16h00
  3. Macro pour lancer l'impression
    Par Dailyplanet dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 05/10/2009, 10h59
  4. création macro pour enregistrer code VBA
    Par Solenne86 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2009, 04h00
  5. " Excel" : Macro pour tri trois variables
    Par jeremtokyo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/06/2007, 12h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo