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 de l'exécution du code


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Par défaut Lenteur de l'exécution du code
    Bonjour,

    J'ai créé un fichier Excel 2010 avec du code visual basic pour un de mes clients.

    Tout fonctionne rapidement sous Windows mais dès que je veux l'exécuter sur XL pour Mac 2011, le code s'exécute très lentement.

    Merci de votre aide

    Ci joint le code ci-dessous

    Bien cordialement


    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Public NomFeuille
    Sub Protéger()
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="HDR"
        ActiveWorkbook.Protect Structure:=True, Windows:=False, Password:="HDR"
    End Sub
    ---------------
    Sub Deprotéger()
        'ActiveSheet.Unprotect
        ActiveSheet.Unprotect Password:="HDR"
        ActiveWorkbook.Unprotect Password:="HDR" 'Structure:=false, Windows:=False
     
    End Sub
    --------------
    Sub Nouvelle_facture()
    'Modifié le 02/05/2012 par PGI
    Application.ScreenUpdating = False
            Réponse = MsgBox("Confirmez vous la création ?", vbOKCancel)
            If Réponse = vbOK Then
                Sheets("Accueil").Select
                NomFeuille = Worksheets("Accueil").Range("Compteur_Fact")
                 Sheets("Accueil").Select
                Deprotéger
                Range("Compteur_Fact") = NomFeuille + 1
                Sheets("Accueil").Select
                ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="HDR"
     
                On Error Resume Next
                If NomFeuille = "" Then Exit Sub
    'Modifié le 02/05/2012 par PGI
    'Application.ScreenUpdating = False
     
                Sheets("Modèle").Visible = True
                Deprotéger
                Sheets("Modèle").Copy after:=Sheets(3)
                Deprotéger
                ActiveSheet.Name = NomFeuille
                Range("Num_Fact") = NomFeuille
                'Protéger
                'Range("Num_Fact") = NomFeuille
                If Err <> 0 Then
                    Err.Clear
                    Application.DisplayAlerts = False
                    Sheets(4).Delete
                    msg = "Le nom de feuille que vous avez tapé n'est pas valide !" _
                    & Chr(13) + Chr(10)
                    'Modifié le 02/05/2012 par PGI
                    '& vbCrLf
                    msg = msg & Chr(13) + Chr(10)
                    'Modifié le 02/05/2012 par PGI
                    ' & vbCrLf
                    msg = msg & "- Vérifiez que le nom de la feuille ne dépasse " _
                    & "pas 31 caractères" & Chr(13) + Chr(10)
                    'Modifié le 02/05/2012 par PGI
                    '& vbCrLf
                    msg = msg & "- Vérifiez que le nom de la feuille ne contient " _
                    & "aucun des caractères suivants :" & Chr(13) + Chr(10)
                    'Modifié le 02/05/2012 par PGI
                    '& vbCrLf
                    msg = msg & " \ / : ? * [ ou ]" & Chr(13) + Chr(10)
                    'Modifié le 02/05/2012 par PGI
                    ' & vbCrLf
                    msg = msg & "- Vérifiez qu'une feuille du classeur ne possède " _
                    & "pas déjà un nom identique" & Chr(13) + Chr(10)
                    'Modifié le 02/05/2012 par PGI
                    ' & vbCrLf
                    Reponse = MsgBox(msg, , "Saisie invalide")
                    'Nouvelle_facture
                End If
                    Sheets(4).Select
     
                Else
            End If
     
                      Sheets("Accueil").Select
                ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="HDR"
            Sheets("Modèle").Select
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="HDR"
          Sheets("Modèle").Visible = False
    'Modifié le 02/05/2012 par PGI
    '        Application.ScreenUpdating = True
          Sheets(4).Select
          Protéger
    '        Sheets(NomFeuille).Select
    'Modifié le 02/05/2012 par PGI
           Application.ScreenUpdating = True
    End Sub

  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
    Bonjour

    Évite les Select, tu auras un gain considérable de temps

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, en plus des conseils avisés de Mercatog, qqs remarques :
    Option Explicit n'est pas un luxe
    D'autre part l'utilisation du CodeName est toujours souhaitable
    Cela permettant de ne pas retoucher au code VBA même si l'utilsateur change le nom d'onglet des feuilles, les déplacent ou en ajoutent.

  4. #4
    Membre éclairé Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Par défaut SP2
    Le 13 avril, Microsoft a sorti le Service Pack 2 pour la suite Office 2011. Il est dit que ce SP2 améliore les performances Word, Excel et PowerPoint. Avec les conseil avisés de mes VDD plus le boost de performance du SP2, ton problème peut être plus ou moins réglé.
    Info et télécahrgement ici

Discussions similaires

  1. Réponses: 44
    Dernier message: 02/08/2006, 16h12
  2. Erreur 3141 dans exécution de code
    Par zoom61 dans le forum Access
    Réponses: 13
    Dernier message: 23/03/2006, 17h31
  3. [RosASM] Tracer l'exécution du code
    Par aumeunier dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 14/03/2006, 18h26
  4. Réponses: 3
    Dernier message: 20/04/2005, 12h30
  5. Réponses: 7
    Dernier message: 03/02/2005, 17h20

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