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.
Partager