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 :

Problèmes PageSetup BUG


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut Problèmes PageSetup BUG
    Bonjour,

    j'ai un problème lors de la génération d'un fichier excel.
    J'utilise Excel 2010 mais je dois produire des ".xls"

    J'ai une macro dans un fichier excel A (XLS) qui génère un fichier excel B (XLS).

    J'arrive à faire à peu près tout ce que je veux mais je rencontre un bug étonnant : j'ai une fonction qui règle des paramètres d'impression, le code s’exécute mais le résultat n'est pas au rendez vous.

    La chose étonnante est que je n'ai pas le résultat voulu lorsque j'exécute la macro d'un bloc, mais j'obtiens le résultat voulu lorsque je l'exécute en pas à pas !!

    voici le code de la fonction :
    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
     
    Sub Definir_zone_impression(ws As Worksheet)
    'On recherche le nombre de lignes totale
        Dim nbLigneTotale As Integer
        nbLigneTotale = 6
        While ws.Range("B" & nbLigneTotale) <> ""
            nbLigneTotale = nbLigneTotale + 1
        Wend
        Application.PrintCommunication = False
     
        With ws.PageSetup
            .PrintArea = "$A$1:$AN$" & nbLigneTotale
            .PrintTitleRows = "$4:$5"
            .PaperSize = xlPaperA3
            .Orientation = xlLandscape
            .FitToPagesTall = False
            .FitToPagesWide = 1
        End With
    End Sub
    Et l'appel à cette fonction se fait dans la fonction principale par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Call Definir_zone_impression(Workbooks(Nom_fichier).Sheets(1))
    Pouvez vous m'aider ?

  2. #2
    Membre éclairé Avatar de verredewhisky
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Janvier 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Janvier 2013
    Messages : 63
    Par défaut
    C'est ton while qui est mal paramétré ou alors c'est tes $ qui font "bugger" ton code. Tas pas besoin de fixer les cellules non ? Tu peux les enlever.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    As tu testé en faisant une pose dans ton code avec DoEvents ?
    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 Test()
     
        Dim I As Long
     
        'ici ton code...
     
        'ici une pose
        For I = 1 To 10000
     
            DoEvents
     
        Next I
     
        'puis l'appel
        Call Definir_zone_impression(Workbooks(Nom_fichier).Sheets(1))
     
    End Sub
    Pour trouver la dernière ligne utilisée en colonne B, tu n'est pas obligé de boucler, tu peux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    With ws
     
        nbLigneTotale = .Cells(.Rows.Count, 2).End(xlUp).Row
     
    End With
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    nbLigneTotale = 6
    While ws.Range("B" & nbLigneTotale) <> ""
        nbLigneTotale = nbLigneTotale + 1
    Wend
    Hervé.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 33
    Par défaut
    J'ai essayé de rajouter des "DoEvents", ça ne change rien.

    J'ai amélioré le code en remplaçant le while, ça ne change rien.

    Je pense que c'est lié au Application.PrintCommunication
    Dans un cas (execution en un bloc), la fenêtre n'a pas le focus et dans l'autre cas, elle l'a.
    Ça doit être une histoire comme ça mais c'est très flou.

    Je pense que c'est aussi lié aux propriétés d'impression de la feuille source qui pilote la création du fichier excel.
    Je viens de faire un test : Dans mon fichier excel A (celui qui génère), je change les paramètres d'impressions (je sélectionne une imprimante qui accepte le A3).
    Je génère le fichier, pas de problème !!
    Je quitte le fichier A (sans sauvegarder), je le relance, je regénère, ça ne marche pas.

    J'en conclus que les paramètres du fichier B sont "reliés" (je ne sais comment dire) aux paramètres du fichier générateur.
    C'est très étonnant, je n'y comprends rien et surtout je ne vois pas de solution car je ne peux pas savoir à l'avance quelle imprimante "par défaut" va être connectée à la personne qui utilisera le fichier A.

Discussions similaires

  1. Problème ou bug ? Tableau dans une boucle
    Par nico1811 dans le forum Ruby
    Réponses: 12
    Dernier message: 25/01/2010, 09h50
  2. Réponses: 6
    Dernier message: 21/07/2009, 16h06
  3. Problème Calendar (Bug ?)
    Par eighty_three dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2008, 17h58
  4. [MySQL] Problème Calendrier bug?
    Par mikosworld dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/09/2007, 23h34
  5. Probléme ou BUG (PGSQLv8)?
    Par localhost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/03/2005, 16h51

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