Lenteur d'in code en VBA

Fermé
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 9 janv. 2012 à 11:06
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 - 9 janv. 2012 à 16:11
Bonjour à tous,

A partir d'un classeur j'utilise le code ci-dessous pour créer un nouveau classeur, faire sa mise en forme et le sauvegarder.

'     Création du Nvx classeur.

    Workbooks.Add                                            ' Création Nvx Classeur
    Sheets("Feuil1").Select                                 ' Sélection feuille1
    Sheets("Feuil1").Name = "Essai1"               ' Nom feuille 1

' Mise en page.

    ActiveSheet.PageSetup.PrintArea = ""
        With ActiveSheet.PageSetup
            .PrintTitleRows = "$26:$27"                 ' Fixe les N° de lignes à imprimer en haut des pages.
            .PrintTitleColumns = ""                         ' Fixe les N° de colonnes à imprimer à gauche des pages.
        End With

     ActiveSheet.PageSetup.PrintArea = ""
         With ActiveSheet.PageSetup
            .LeftHeader = ""                                                    ' Partie gauche de l'entête =  Vide.
            .CenterHeader = ""                                                  ' Partie centrale de l'entête = Vide.
            .RightHeader = ""                                                   ' Partie droite de l'entête = Vide.
            .LeftFooter = "Save_Bdx"                                            ' Partie gauche du pied de page = Save_Bdx.
            .CenterFooter = "&P"                                                ' Partie centrale du pied de page = N° de page.
            .RightFooter = "&J"                                                 ' parie droite du pied de page = Date du jour.
            .LeftMargin = Application.InchesToPoints(0.393700787401575)         ' Règle la marge de gauche.
            .RightMargin = Application.InchesToPoints(0.393700787401575)        ' Règle la marge de droite.
            .TopMargin = Application.InchesToPoints(0.393700787401575)          ' Règle la marge du bas.
            .BottomMargin = Application.InchesToPoints(0.393700787401575)       ' Règle la marge du haut.
            .HeaderMargin = Application.InchesToPoints(0)                       ' Règle l'entête de page.
            .FooterMargin = Application.InchesToPoints(0)                       ' Règle le pied de page.
            .Zoom = False                                                       ' Pour régler le zoom d'impression.
            .FitToPagesWide = 1                                                 ' Adapte la largeur d'impression à la taille du papier.
            .FitToPagesTall = False                                             ' Adapte la hauteur d'impression à la taille du papier.
            .PrintErrors = xlPrintErrorsDisplayed
        End With

'  Sauvegarde.

        Application.DisplayAlerts = False                   ' Bloque le message d'alerte.
        ActiveWorkbook.SaveAs (Nom_Chemin & "\" & Nom_Fichier & " " & Format(Annee_Conncours) & ".xls"), FileFormat:=xlNormal   ' Sauvegarde du fichier créé.
        Application.DisplayAlerts = True                    ' Remet le message d'alerte.


Cela fonctionne parfaitement mais je trouve que cette macro est très longueà s'exécuter, environ 10 secondes, es-ce normal ?
Comment faire pour que se soit plus rapide ?
Merci d'avance pour votre aide.
Cordialement
Mistral
A voir également:

2 réponses

michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
Modifié par michel_m le 9/01/2012 à 11:15
bonjour

en début de code essaies

Application.screenupdating=False

nota: il est inutile de remettre à False en fin de macro


mais peut-^tre que :
comme tes nouveaux classeurs ont la m^me mise en page, tu en fais à ce format et tu l'enregistre en tant que modèle; ta macro appele ce modèle et l'enregistre au nom voulu
Michel
0
Mistral_13200 Messages postés 636 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 15 novembre 2024 4
9 janv. 2012 à 16:11
Bonjour Michel,

Je mets cette instruction généralement en tout début de macro, et reviens en arriere à la fin mais ça ne change rien c'est toujours pareil.

Je ne peux pas créer un format de classeur car ce classeur Excele est utilisé par bon nombre de personne et sur des machines différentes. Je suis donc obligé de faire la mise en forme après avoir créé le nvx classeur.
0