Macro trouvée dans Normal.dot [Résolu]

Signaler
Messages postés
3
Date d'inscription
lundi 27 janvier 2020
Statut
Membre
Dernière intervention
29 janvier 2020
-
Nicolas_Bob
Messages postés
3
Date d'inscription
lundi 27 janvier 2020
Statut
Membre
Dernière intervention
29 janvier 2020
-
Bien le bonjour,

Je suis intervenu sur un ordinateur qui avait un message d'erreur à chaque fois qu'il ouvrait un fichier Word (.doc ou .docx). Il s'agissait d'un message d'erreur de Visual Basic (Qui permet donc de déboguer pour identifier l'erreur).

J'ai donc pu voir que cela provenait d'un fichier nommé "Normal" qui semblait ouvert, et contenant un module avec un code dedans. Il est signé par une personne que nous ne connaissons pas (Et daté d'il y a pas mal d'années).

J'ai réinitialisé le fichier "Normal.dot" et le problème a disparu. Néanmoins, j'aimerais savoir ce que fait exactement le programme (Je ne m'y connais pas suffisamment pour être sûr. J'ai l'impression que c'est une aide pour le publipostage mais je ne vois pas que ça foutrait ici, et pourquoi ça débarquerait aujourd'hui seulement). Pourrait-il s'agir de quelque chose de pas très gentil ?

Voici ci-dessous le code, je masque juste la note de l'auteur supposé.

Sub AutoOpen()
'
' AutoOpen Macro
' Macro créée le xx/xx/xx par xxxxxxxxx
'
Dim NomMatrice As Object
Dim NomCatalog As Object


Set NomMatrice = ActiveDocument.Fields.Parent

With ActiveDocument.MailMerge.DataSource
   
    .ActiveRecord = wdFirstRecord
    
End With

With ActiveDocument.MailMerge
    .Destination = wdSendToNewDocument
    .Execute
End With

ActiveDocument.Fields.Update
Set NomCatalog = ActiveDocument
    Selection.EndKey Unit:=wdStory

   If ActiveWindow.View.SplitSpecial = wdPaneNone Then
        ActiveWindow.ActivePane.View.Type = wdPageView
    Else
        ActiveWindow.View.Type = wdPageView
    End If
    ActiveWindow.ActivePane.VerticalPercentScrolled = 0

Documents(NomMatrice).Close saveChanges:=wdDoNotSaveChanges

Cfini:
End Sub


C'est donc la partie ".ActiveRecord = wdFirstRecord" qui buggait, avec une "Erreur d'exécution '5852' : L'objet demandé n'est pas disponible". J'imagine que jusque là, la macro se finissait simplement sans erreur depuis toutes ces années. D'où mon inquiétude.

Sauriez-vous m'aider à identifier ce fonctionnement ?

Merci beaucoup d'avance si vous pouvez m'éclairer.

Très cordialement.

3 réponses

Messages postés
9708
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
22 février 2020
534
bonjour,
le fichier "normal" s'ouvre quand Word démarre, il contient des éléments, comme du code, qui peuvent être utilisés quel que soit le fichier sur lequel Word travaille.
je n'ai pas passé assez de temps pour analyser le code, mais il me semble largement inoffensif. comme tu écris, cela faisait du publipostage à partir du document ouvert.
la présence de ce code dans normal.dot est sans doute causée par une erreur de la personne qui a, il y a longtemps, créé ce code.
Word, malheureusement, propose, par défaut, de sauver le code dans normal.dot, pas dans le fichier en cours. ou bien la personne voulait-elle vraiment faire cela quel que soit le fichier ouvert.
personnellement, ce que je trouve inquiétant, c'est qu'un fichier normal.dot dont l'origine est oubliée se retrouve sur cet ordinateur, et, sans doute, sur d'autres.
Messages postés
3
Date d'inscription
lundi 27 janvier 2020
Statut
Membre
Dernière intervention
29 janvier 2020

Ca me rassure de ne pas être le seul à penser qu'il s'agit d'un code inoffensif, je vais tout de même laisser la question une journée de plus si quelqu'un saurait confirmer.

J'ignorer cette histoire de sauvegarde dans le Normal.dot, ça peut en effet expliquer la présence de ce truc.

Merci pour ton retour, en tout cas ;)
madmyke
Messages postés
44367
Date d'inscription
lundi 21 janvier 2008
Statut
Modérateur
Dernière intervention
22 février 2020
7 572
Je confirme, pour les deux.
Messages postés
3
Date d'inscription
lundi 27 janvier 2020
Statut
Membre
Dernière intervention
29 janvier 2020

OK merci beaucoup, je clôture la question ;)