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 :

lenteur pour redéfinir les entetes de page


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut lenteur pour redéfinir les entetes de page
    bonjour,

    afin d'être sûr que les impressions de mon docs indiquent explicitement la version de celui ci, j'ai une macro déclenchée à l'impression. à partir d'une recherche sur le forum, j'ai pu ajouter quelques lignes d'optimisation mais au final, c'est pas mieux...

    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
    Private Sub Workbook_BeforePrint(cancel As Boolean)
        Application.EnableCancelKey = xlDisabled
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        Application.Interactive = False
        Application.Calculation = xlCalculationManual
     
        For Each feuille In Sheets
            feuille.PageSetup.RightHeader = "v12"
        Next feuille
     
        Application.ScreenUpdating = true
        Application.DisplayAlerts = true
        Application.Interactive = true
        Application.Calculation = xlCalculationAutomatic
    End Sub
    mon soucis est que c'est TROP LENT. bien évidemment, j'ai du code sur les onglets (activate/desactivate par exemple) qui mettent à jour des TCD, des graphs, etc. --> l'idée est de pouvoir les désactiver le temps de l'invite d'impression.


    Merci d'avance.

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    une solution d'aménagement possible est de toujours mentionner la version de ton document dans son nom et alors d'utiliser le code de formattage &F dans ton RightHeader.

    Alors plus de problème. mais je ne sais pas si c'est acceptable pour toi.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut
    Merci Godzestla,

    mais c'est un fichier de pilotage dont le nom indique la date de derniere saisie, alors qu'en entete, on souhaite indiquer le dernier mois contenant les données prises en compte... (par exemple le fichier peut avoir un nom du style "pilotage-20081002" et avoir une version en 2008-09 mais cela pourrait être 2008-10, 2008-08, etc.).

    mais ça m'enerve de ne pas arriver à lui dire : "ne calcul plus rien, colle juste 7 caracteres en entete !!!"

  4. #4
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Pourquoi ne mets tu pas alors la version dans une cellule et lorsque cette cellule change tu effectues ta moulinette d'entete.

    cela n'ira pas plus vite mais au moins cela ne tournera que lorsque la version change.

    Qu'en penses-tu ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Godzestla Voir le message
    Pourquoi ne mets tu pas alors la version dans une cellule et lorsque cette cellule change tu effectues ta moulinette d'entete.

    cela n'ira pas plus vite mais au moins cela ne tournera que lorsque la version change.

    Qu'en penses-tu ?
    ben ouais mais le onchange manque cruellement sous excel.... je crosi savoir que ce qui s'en rapproche est le selectionChange mais c'est pas top,
    je me trompe ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as une autre solution consistant à n'inscrire qu'une fois l'entête sur toutes les feuilles à la fois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
        With ActiveSheet.PageSetup
            .RightHeader = "v12"
        End With
    N'oublie pas de dissocier les feuilles en ajoutant par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Feuil1").Select

  7. #7
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Tu as tout juste, mais il y a un autre moyen.

    Tu stockes cette version dans une feuille cachée et tu effectues l'update de ce parametre via un bouton de commande + msgbox, ou un userform... ou que sais-je.

    Tu gères donc toi-même la modif de ta cellule et l'appel de ta moulinette juste derrière.

    Non ?
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pas de moulinette Godzestla, regarde ma proposition

  9. #9
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Pas de moulinette Godzestla, regarde ma proposition
    J'ai vu. Je ne connaissais pas. Cela évite donc son ralentissement.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  10. #10
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut Code inutile
    Citation Envoyé par ouskel'n'or Voir le message
    Tu as une autre solution consistant à n'inscrire qu'une fois l'entête sur toutes les feuilles à la fois :
    Merci...

    euh... ya moyens de tous les selectionner sans les connaitre (il se peut ques des onglets se rajoutent ou disparaissent... je ne veux pas avoir à modifier du code à ce moment la ...)

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et en sélectionnant toutes les feuilles ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveWorkbook.Sheets.Select
    With ActiveSheet.PageSetup
        ...
    Edit
    Non, ça ne fonctionne pas. Peut-être en créant un tableau des noms de feuilles. Je regarde.

  12. #12
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut
    Merci ouskel'n'or,

    je regardes également.... au premier qui trouve...

  13. #13
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut Citation du code inutile
    Citation Envoyé par ouskel'n'or Voir le message
    Et en sélectionnant toutes les feuilles ?
    Edit
    Non, ça ne fonctionne pas. Peut-être en créant un tableau des noms de feuilles. Je regarde.
    ouais mais pour remplir le tableau, t'es obligé de faire un for each f in sheets.... donc au final niveau temps ça rapportera rien, non ?!?

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Non, le temps de création d'un tableau de noms de feuilles est quasi nul. Là n'est pas le pb. Mon idée était d'utiliser une syntaxe du style "Sheets(array(Join(tablo))).select"
    Le pb est que ça ne fonctionne pas. Et je n'ai pas trouvé de solution de rechange.

  15. #15
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Ceci fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim tabl() As Variant
    Dim i As Integer
    For i = 1 To Sheets.Count
    ReDim Preserve tabl(1 To i)
    tabl(i) = Sheets(i).Name
    Next
    Sheets(tabl).Select
    With ActiveSheet.PageSetup
     .RightHeader = "v12"
    End With
    J'avais essayé avec le numéro de la feuille en table plutot que le nom. Ca m'a craché excel. !
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  16. #16
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut citation du code inutile
    Citation Envoyé par Godzestla Voir le message
    Ceci fonctionne.

    J'avais essayé avec le numéro de la feuille en table plutot que le nom. Ca m'a craché excel. !
    c'est exactement à ce que je pensais... mais le remplissage du tableau ne me fait-il pas défiler sur toutes mes pages, ralentissant ainsi l'execution ?

  17. #17
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Citation Envoyé par onejock Voir le message
    c'est exactement à ce que je pensais... mais le remplissage du tableau ne me fait-il pas défiler sur toutes mes pages, ralentissant ainsi l'execution ?
    Je n'ai rien remarqué de ce genre. j'ai testé avec un bete fichier de 3 feuilles depuis la fenetre VBA, et il reste dans VBA.

    Essaie.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Godzestla, j'avais d'abord testé ce que tu as fait. Remplace V12 par V14 et relance ta procédure. Puis vérifie sur toutes les feuilles. Chez moi elle ne fonctionne pas non plus.

  19. #19
    Membre du Club
    Inscrit en
    Décembre 2004
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 111
    Points : 58
    Points
    58
    Par défaut
    bon ben ça ne marche pas en fait chez moi :

    j'ai une erreur sur la ligne
    (le methode select de la classe sheet a échoué...).

    j'ai des onglets en veryhidden, je sens que c'est ça...

  20. #20
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Godzestla, j'avais d'abord testé ce que tu as fait. Remplace V12 par V14 et relance ta procédure. Puis vérifie sur toutes les feuilles. Chez moi elle ne fonctionne pas non plus.
    Bien vu,

    le pire c'est que j'avais vérifié mais pas juqu'à la fin.

    P.. de VBA.

    Citation Envoyé par onejock Voir le message

    j'ai des onglets en veryhidden, je sens que c'est ça...
    Ouai. mais ça ne marche pas même sans cela. Il ne fait pas toutes les feuilles.


    Edit

    le problème ne vient pas de Sheets(tabl).select car la sélection manuelle du type
    Sheets(Array("Sheet1", "Sheet2",...).select donne le même résultat. Seule la page 1 est bonne à 100%.

    Je pense que le problème est sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveSheet.PageSetup
    qui ne supporte qu'une sheet.
    (\ _ /) Cordialement G@dz
    (='.'=)

    (")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. QGIS : lenteur pour afficher les listes des vues dans "Ajouter une table PostGIS"
    Par fafa63 dans le forum SIG : Système d'information Géographique
    Réponses: 2
    Dernier message: 11/07/2014, 19h04
  2. Réponses: 0
    Dernier message: 04/06/2009, 14h36
  3. Réponses: 6
    Dernier message: 16/02/2009, 14h13
  4. format de commentaires pour les entetes de fonctions
    Par Mokhtar BEN MESSAOUD dans le forum C
    Réponses: 4
    Dernier message: 12/11/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