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 :

Selection auto de la zone d'impression


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Par défaut
    Bonjour,

    Comme vous pourrez le voir sur mon fichier, ma trrame est découpé en plusieurs pages

    Les données proviennent d'une extraction, puis sont insérer sur cette trame grâce à une macro

    Le soucis c'est qu'à chaque fois je dois spécifier manuellement ma zone d'impression, car à cause de ma trame, je ne sais pas comment faire en VBA

    Pourriez-vous m'aidez svp

    Merci par avance

    Voici une capture d'écran pour ceux qui ne peuvent pas ouvrir le fichier

  2. #2
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Je n'apporte pas la réponse mais je pose plutôt une question : pourquoi ne pas laisser Excel faire la mise en page ? Cela permettrait de n'avoir que les lignes pertinentes, et pas les quelques 30.000 lignes inutiles, et du coup plus besoin de définir de zone d'impression

  3. #3
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,

    Voici une méthode, il y a peut-être plus propre mais ça fonctionne.
    L'avantage avec la boucle et la "redéfinition" de la zone d'impression c'est qu'il ne faut pas la vidée.

    En espérant que mes commentaires soient explicites...


    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
    Sub SetPrint()
    Dim MaRech As Range
     
    With ActiveSheet.Range(Cells(2, 6), Cells(Columns(1).Cells.Count, 6)) 'Défini la plage de recherche hors ligne 1
        Set MaRech = .Find("PAGE", LookIn:=xlValues, lookat:=xlPart) 'Trouve le mot PAGE (pour déterminer début et fin de page)
     
        If Not MaRech Is Nothing Then
            firstAddress = MaRech.Address 'Permet de pas boucler sans fin
            Do
                If Application.Count(ActiveSheet.Range(Cells((MaRech.Row) - 58, 6), Cells(MaRech.Row, 6))) > 1 Then 'Vérifie si il y des données pour la page en cours
                    ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & MaRech.Row - 1 'Défini la plage d'impression
                Else
                    Exit Sub 'Sors de la procédure si rien sur la page en question
                End If
                Set MaRech = .FindNext(MaRech) 'Passe au mot Page suivant
            Loop While Not MaRech Is Nothing And MaRech.Address <> firstAddress 'Permet la boucle
        End If
    End With
     
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Par défaut
    Re

    (je précise que toute mes demande concerne le même fichier )


    Je viens d'esayer mais ça ne fonctionne pas

  5. #5
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Citation Envoyé par wyzer Voir le message
    ...Je viens d'esayer mais ça ne fonctionne pas
    Qu'est ce qui ne fonctionne pas ?
    Bug (si oui quelle ligne), mise en page incorrecte,... ?

    J'ai testé chez moi et c'était nickel, donc faut m'endire plus...

    A+

  6. #6
    Membre éclairé
    Homme Profil pro
    Assistant technique
    Inscrit en
    Février 2007
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Assistant technique
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2007
    Messages : 336
    Par défaut
    Désolé, en fait je n'ai pas message d'erreur, la macro se lance bien, mais une fois que je vérifie ma zone d'impression, elle n'a pas bougé

    j'ai un peu compris ton code, et on pourrait aussi faire un truc du ce genre :

    - on commence par le bas, et on cherche le dernier mot "PAGE"

    - puis on regarde si entre ce dernier mot "PAGE" et le mot "MATRICULE" de la même colonne juste au dessus s'il n'y a rien

    - s'il n'y a rien on remonte vers le mot "PAGE" suivant, etc...

    - s'il y a des des données, alors on défini un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & Dernier_mot_PAGE_vérifié.Row - 1
    Non ?

  7. #7
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    C'est en effet une autre option, c'est dans la veine de ce que j'ai fait.

    As tu essayé mon code en pas à pas pour "voir" ce qui ne va pas, car même si tu trouve une solution tout seul (ce qui est très bien ) j'aimerais comprendre pourquoi ça ne fonctionne pas chez toi.

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/10/2014, 10h53
  2. Réponses: 2
    Dernier message: 04/03/2013, 10h19
  3. Réponses: 8
    Dernier message: 10/03/2006, 01h05
  4. Vba excel agrandir la zone d'impression a droite
    Par mb95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/12/2005, 07h42
  5. définir une zone d'impression sous Excel
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2005, 12h26

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