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 :

Macro, tri et impression


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut Macro, tri et impression
    Bonjour à tous

    Cela fait plus d'une semaine que je travaille à la réalisation d'une macro, avec le peu de connaissances que j'ai sur VBA. J'ai donc décidé de faire appel à votre aide.

    Mon objectif est de concevoir une macro, permettant d'effectuer un tri sur données importées.
    Une première macro avait été effectuée, elle permettait d'imprimer des graphiques sur tout le mois. Seulement, dans un soucis de lisibilité et d'économie de papier, je dois effectuer le tri sur les données du mois correspondant à des critères, mais après plusieurs tentatives, je n'y arrive toujours pas.
    Voici le code de la fonction permettant l'impression de gr "pénalités" ;
    Code :
    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
    25
    26
     
    Private Sub imprimpenal_Click()
    Dim Ligne As Integer
     
    If borneInfpenal.Value > borneSuppenal.Value Then
      MsgBox "Borne Inf > Borne Sup", , "Erreur de saisie"
    Else
       Sheets("PENALITES").Select
       Dim nbjourpenal As Integer
       Dim x As Integer
       nbjourpenal = getnbJourPenal(Sheets("INDEX").Combo_moispenal.Value)
     
            For x = borneInfpenal.Value To borneSuppenal.Value
                Sheets("PENALITES").Range("A3") = getvalmoispenal() & "/" & x & "/" & getvalAnneePenal() & " 5:59"
       Ligne = Nbre_Ligne
       Range("B6:F").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
            Range("H1:K" & Ligne), Unique:=False
     
       Sheets("GRAPH PENALITES").Select
       ActiveWindow.SelectedSheets.PrintOut Copies:=1
        Next x
     
     
    End If
    Sheets("INDEX").Select
    End Sub
    Les lignes "range" correspondent aux critères de filtre avancés sur la feuille de calcul, mais je ne pense pas que ce soit la démarche à suivre.
    "borneInfpenal" correspond au 1er jour de la période, de même que borneSuppenal correspond au dernier jour.

    Pourriez-vous me donner un peu d'aide ?

    Merci d'avance

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bienvenue au forum,
    Pas facile d'aider sur le peu d'éléments fournis.
    Une première remarque concernant ces 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Ligne = Nbre_Ligne
       Range("B6:F").AdvancedFilter
    C'est quoi Nbre_Ligne?
    Range("B6:F??" ); il te manque la ligne de la colonne F.

    J'ai refais ton code pour la lisibilité
    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
    Private Sub imprimpenal_Click()
    Dim Ligne As Integer, nbjourpenal As Integer, x As Integer
     
    If borneInfpenal.Value > borneSuppenal.Value Then
        MsgBox "Borne Inf > Borne Sup", , "Erreur de saisie"
    Else
        With Sheets("PENALITES")
            nbjourpenal = getnbJourPenal(Sheets("INDEX").Combo_moispenal.Value)
            For x = borneInfpenal.Value To borneSuppenal.Value
                .Range("A3") = getvalmoispenal() & "/" & x & "/" & getvalAnneePenal() & " 5:59"
                Ligne = Nbre_Ligne
                'Initiative à corriger
                .Range("B6:F" & Ligne).AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=.Range("H1:K" & Ligne), Unique:=False
                Sheets("GRAPH PENALITES").PrintOut Copies:=1
            Next x
        End With
    End If
    Sheets("INDEX").Select
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut
    Merci pour ta réponse rapide.

    Voici la fonction Nbre_Ligne, je ne l'ai pas écrite, j'ai un peu de mal à savoir son utilité...

    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
     
    Function Nbre_Ligne()
    Dim Ligne, Colonne As Integer
    Dim fini As Boolean
    fini = False
    Ligne = 0
    Colonne = 8
    Do While Ligne <= 5 And Not fini
       Do While IsEmpty(Cells(Ligne + 2, Colonne)) And Colonne <= 11
        Colonne = Colonne + 1
       Loop
      If Colonne <= 11 Then
       Colonne = 8
       Ligne = Ligne + 1
       Else
        fini = True
      End If
    Loop
      Nbre_Ligne = Ligne
    End Function

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    On ne va pas s'en sortir.
    Le mieux de décrire, le plus clairement possible, la disposition des données, ce que tu souhaites obtenir et concrètement, où ça coince.
    Vue ta première explication, c'est peu clarifié.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 5
    Par défaut
    Désolé pour le manque de clarté, c'est assez complexe à expliquer.
    Pour faire simple, je souhaite obtenir ce genre de graphique :


    Donc imprimer les courbes du jour, dès qu'une valeur en dessous des critères est atteinte.
    Cette macro est à réaliser dans le cadre d'un stage d'études, cependant je n'ai comme seul bagage "msgBox" pour afficher le nombre de feuilles, et leurs noms...

Discussions similaires

  1. [XL-2003] Macro Tri
    Par jerome.cubi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2010, 17h13
  2. [XL-2007] Macro tri croissant
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/09/2009, 14h41
  3. Macro Pour L'impression de lien Hypertexte
    Par outlaw971 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/12/2008, 14h04
  4. [OpenOffice][Tableur] Macro-transfert macro tri colonne de Excell vers Open
    Par ObjectifSciences dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 26/11/2008, 11h30
  5. Macro pour une impression ne fonctionne pas
    Par aujero dans le forum Access
    Réponses: 2
    Dernier message: 01/06/2006, 17h23

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