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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2019
    Messages : 2
    Points : 1
    Points
    1

    Par défaut Exécution Sub lente quand lancée via raccourci clavier

    Bonjour,

    Ancien ingénieur, je n'ai pas codé depuis un moment m'étant reconverti dans le domaine médical, et tout en ayant fait pas mal de programmation vba ce n'était pas non plus ma spécialité, mon code est donc loin d'être élégant et utilise beaucoup la méthode Selection. J'utilise Word 2010 sur Windows 7 Professionnel.

    Je cherche à reformater via vba les ordonnances produites par le logiciel archaïque avec lequel je travaille afin de gagner du temps. J'ai une macro afin de supprimer le texte de chaque ligne numérotée jusqu'à l'ouverture des parenthèses. Quand je lance directement la macro depuis l'éditeur ou via l'onglet macro, aucun problème, l'exécution dure 0.09 s mais quand j'affecte la macro à un raccourci clavier (CTRL+M) le temps d'exécution est de de 0.9 s. Etant donné que j'ai un certain nombre d'autres macros de formatage que je suis censé appliquer après, qui posent toutes le même problème, je passe d'une exécution de 1 à 6 secondes ce qui devient gênant.

    Mon code :


    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
    Sub beginning()
    Dim i As Integer
    Dim j As Integer
    Dim search As String
    Dim var As String
    Dim start As Single
     
    start = Timer
     Application.ScreenUpdating = False
     
     
    'supprimer les premieres parties
    Selection.HomeKey Unit:=wdStory
     
     
     
    For j = 1 To 15
    i = 15 - j + 1
    Selection.HomeKey Unit:=wdStory
    search = i & " - "
    Selection.Find.ClearFormatting
     
        With Selection.Find
        .ClearFormatting
        .Execute FindText:=search, Forward:=True, MatchWholeWord:=True
     
            If .Found = True Then
            var = Selection.Text
     
            While Right(var, 1) <> "("
            Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
            var = Selection.Text
            Wend
     
            Selection.Delete
    '    Selection.MoveUp Unit:=wdLine, Count:=1
     
                If i <> 1 Then
                Selection.TypeBackspace
                Selection.TypeParagraph
                End If
            End If
        End With
    Next
     
        MsgBox "durée du traitement: " & Timer - start & " secondes"
     
    End Sub

    Exemple de texte auquel je l'applique :
    1 - BISOPROLOL (BISOCE GE 5MG CPR), voie ORALE, 1 COMPRIME(S) Matin pendant 1 mois
    2 - FUROSEMIDE (FUROSEMIDE 40MG CPR), voie ORALE, 1 COMPRIME(S) Matin Midi pendant 1 mois
    3 - PANTOPRAZOLE (PANTOPRAZOLE 40 MG CPR), voie ORALE, 1 COMPRIME(S) Coucher pendant 1 mois
    4 - PERINDOPRIL (PERINDOPRIL 4MG CPR), voie ORALE, 1 COMPRIME(S) Matin pendant 1 mois
    5 - POTASSIUM CHLORURE (DIFFU-K 600MG GELULE), voie ORALE, 1 GELULE(S) 2/J à 20:00, 08:00 pendant 1 mois
    6 - OXAZEPAM (SERESTA 10MG CPR), voie ORALE, 2 COMPRIME(S) 1/J à 22:00 pendant 1 mois
    7 - RISPERIDONE (RISPERDAL 0,1% SOL BUV FL 30ML), voie ORALE, 1 MG 3/J à 20:00, 08:00, 18:00 pendant 1 mois
    8 - MIANSERINE (MIANSERINE 10MG CPR), voie ORALE, 1 COMPRIME(S) Soir pendant 1 mois
    9 - TIAPRIDE (TIAPRIDAL 5MG/GTTE SOL BUV), voie ORALE, 10 GOUTTE(S) 1 fois dans la journée pendant 1 mois


    Merci d'avance.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Vba Excel
    Inscrit en
    avril 2013
    Messages
    4 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Vba Excel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2013
    Messages : 4 040
    Points : 10 329
    Points
    10 329
    Billets dans le blog
    27

    Par défaut

    Citation Envoyé par bob1202 Voir le message
    Bonjour,

    Effectivement, je constate également une dégradation du temps de traitement. En revanche, en créant un bouton dans la barre d'accès rapide, le temps de traitement est équivalent au lancement direct de la macro. Clic droit à droite de la barre d'accès rapide, changer l'aspect du bouton une fois celui-ci affecté au document ou à votre Normal.dotm.

    Nom : Capture.JPG
Affichages : 14
Taille : 45,3 Ko
    Eric KERGRESSE
    https://sites.google.com/site/erickergresseeirl/
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2019
    Messages : 2
    Points : 1
    Points
    1

    Par défaut

    Bonjour et merci pour votre réponse.

    J'avais déjà essayé pour voir le lancement via la barre d'accès rapide, mais on observe également une dégradation du temps d'exécution lorsque je lance le projet global comprenant une dizaine de macros. Bizarrement, j'oberve aussi une dégadation du temps d'exécution lors de lancements successifs via la barre d'accès rapide. La seule solution que j'ai trouvé, adaptée de ce post http://www.msofficeforums.com/word-v...ry-slow-2.html parlant d'un problème de maniement des objets Shape sur Word 2010, est de masquer la fenêtre pendant exécution. Je ne comprends vraiment pas d'où vient ce problème mais cela fera l'affaire.



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.Visible = False
     
    code
     
    Application.Visible = True

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/02/2012, 20h35
  2. Exécution lente si lancé en Java Web Start
    Par inumerix dans le forum JWS
    Réponses: 2
    Dernier message: 10/01/2011, 09h01
  3. Raccourci clavier quand l'appli n'a pas le focus.
    Par piemur2000 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/12/2009, 11h08
  4. Raccourci clavier pour exécuter ma application JAVA
    Par clubist dans le forum Débuter
    Réponses: 1
    Dernier message: 23/05/2009, 18h07
  5. Déplacer des messages via raccourci clavier ou bouton
    Par le chat 78 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 21/11/2007, 17h32

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