team35
Avait cette question 2
Question
team35 posée le
| 432 consultations

erreur d'enregistrement de macro 5941 sous word 2007

J'ai tenté d'enregister une macro avec l'aide de l'enregistreur de macro de Word 2007. La macro se veut l'ajout d'une numérotation automatique en pied de page. Lors de son exécution, elle s'arrête et affiche le code d'erreur 5941 tout en offrant le debug. voici ce qui est affiché:

Sub Macro1()
'
' Macro1 Macro
'
'
    WordBasic.ViewFooterOnly
    ActiveDocument.AttachedTemplate.BuildingBlockEntries("Numéro normal 2"). _
        Insert Where:=Selection.Range, RichText:=True
    ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

J'ai exploré plusieurs sites et solutions qui proposent des ajouts de code manuellement à la macro. Cependant, ne connaissant pas le code proprement parlé, je voudrais pouvoir utiliser l'enregistreur de macro automatiquement.

Comment corriger se problème pour mes macros futures?

Merci de votre aide!

Circé
A trouvé ceci utile 0
Réponse
Circé répondu le
MVP

Répondre

Bonsoir,

L'enregistrement de macro est vraiment nul !

Tout d'abord, il insère du WordBasic... Ça commence pourtant à dater...

Ensuite, va savoir pourquoi il cherche les blocs de construction dans le modèle attaché ? Car pour moi, le modèle attaché est (par défaut) le normal.dotm ou un autre modèle choisi, mais à ma connaissance, il n'y en a qu'un. Le AttachedTemplate n'a pas besoin qu'on spécifie son chemin.

Or, les blocs de construction ne sont pas stockés par défaut dans le normal.dotm, mais dans le modèle "Building Blocks.dotx" ! Donc, effectivement, la macro ne peut pas trouver le "Numéro normal 2" dans le modèle attaché.

Donc, effectivement, il faut mettre le nom du modèle "building blocks.dotx" avec son chemin  mais moi je le mettrai à la place de AttachedTemplate.

monbloc = Application.Templates( _
        "C:\Users\nom de l'utilisateur\AppData\Roaming\Microsoft\Document Building Blocks\1036\14\Built-In Building Blocks.dotx").BuildingBlockEntries("Numéro normal 2")

m@rina

Geo  le Tourangeau
A trouvé ceci utile 0
Geo le Tourangeau répondu le

Bonjour

... elle s'arrête et affiche le code d'erreur 5941 tout en offrant le debug.

Sur quelle ligne s'arrête-t-elle ?
Le bloc "Numéro normal 2" existe bien ?


A+

team35
A trouvé ceci utile 0
team35 répondu le

Répondre

ActiveDocument.AttachedTemplate.BuildingBlockEntries("Numéro normal 2"). _

"Numéro normal 2" existe certainement car il est inscrit automatiquement par l'enregistreur de macro. Il sagit du modèle de numérotation automatique de bas de page que je sélectionne durant l'enregistrement.

On dirait cependant qu'il construit un code VB en oubliant d'importer la bibliothèque des styles propres à 2007?

Certains forum recommandait d'importer par une ligne de code le fichiers contenant ces styles et modèles, mais je voudrais pouvoir le faire dans l'interface de Word avec l'enregistreur de macro.

en espérant ... 

Geo  le Tourangeau
A trouvé ceci utile 0
Geo le Tourangeau répondu le

Répondre

Re
 Essayez avec :
ActiveDocument.AttachedTemplate.BuildingBlockEntries(123). _


A+

Geo  le Tourangeau
A trouvé ceci utile 0
Geo le Tourangeau répondu le

Répondre

Effectivement.
Ajoutez cette instruction (sur une seule ligne")  à adapter selon votre contexte :
ActiveDocument.AttachedTemplate = "C:\Users\Geo Le Tourangeau\AppData\Roaming\Microsoft\Document Building Blocks\1036\14\Built-In Building Blocks.dotx"

A mon avis ça ne devrait pas suffire, mais si c'est bon tant mieux.
Sinon remplacez "Numéro normal 2" par 123 (sans guillemets cette fois).


A+

Circé
A trouvé ceci utile 0
Réponse
Circé répondu le
MVP

Répondre

Bonsoir,

L'enregistrement de macro est vraiment nul !

Tout d'abord, il insère du WordBasic... Ça commence pourtant à dater...

Ensuite, va savoir pourquoi il cherche les blocs de construction dans le modèle attaché ? Car pour moi, le modèle attaché est (par défaut) le normal.dotm ou un autre modèle choisi, mais à ma connaissance, il n'y en a qu'un. Le AttachedTemplate n'a pas besoin qu'on spécifie son chemin.

Or, les blocs de construction ne sont pas stockés par défaut dans le normal.dotm, mais dans le modèle "Building Blocks.dotx" ! Donc, effectivement, la macro ne peut pas trouver le "Numéro normal 2" dans le modèle attaché.

Donc, effectivement, il faut mettre le nom du modèle "building blocks.dotx" avec son chemin  mais moi je le mettrai à la place de AttachedTemplate.

monbloc = Application.Templates( _
        "C:\Users\nom de l'utilisateur\AppData\Roaming\Microsoft\Document Building Blocks\1036\14\Built-In Building Blocks.dotx").BuildingBlockEntries("Numéro normal 2")

m@rina

Geo  le Tourangeau
A trouvé ceci utile 0
Geo le Tourangeau répondu le

Répondre

Bonjour Circé

Bonsoir,

L'enregistrement de macro est vraiment nul !

Faut pas trop crier dessus, ils pourraient le supprimer sous prétexte de nous rendre la vie plus facile.

Tout d'abord, il insère du WordBasic... Ça commence pourtant à dater...

C'est plutôt surprenant, je dois avoir un Word 2003, je vais regarder ce qu'il fait dans ce cas.

... mais moi je le mettrai à la place de AttachedTemplate. ...BuildingBlockEntries("Numéro normal 2")

Pour moi, ça ne fonctionne pas, il doit falloir utiliser les noms en américains, mais "Normal number 2", ne marche pas non plus.
J'ai donc trouvé l'index correspondant, dans word 2010 c'est 123.
On peut faire une petite fonction qui donne l'index en fonction du nom français tel qu'il figure dans l'interface.


A+

Geo  le Tourangeau
A trouvé ceci utile 0
Geo le Tourangeau répondu le

Répondre

Re

Tout d'abord, il insère du WordBasic... Ça commence pourtant à dater...

C'est plutôt surprenant, je dois avoir un Word 2003, je vais regarder ce qu'il fait dans ce cas.

Word 2003 génère un code vba plus long, mais qui marche bien.
Curieux ce retour en arrière.
Ceci dit, ça montre l'efficacité de Wordbasic en gestion de l'interface.
Mais bon, encore un truc abandonné au profit de plus complexe.


A+

Circé
A trouvé ceci utile 0
Circé répondu le
MVP

Répondre

Hello Geo

Faut pas trop crier dessus, ils pourraient le supprimer sous prétexte de nous rendre la vie plus facile.

MDR !!! T'as raison !! ;)))

... mais moi je le mettrai à la place de AttachedTemplate. ...BuildingBlockEntries("Numéro normal 2")

Pour moi, ça ne fonctionne pas, il doit falloir utiliser les noms en américains, mais "Normal number 2", ne marche pas non plus.

Le code que j'ai donné fonctionne très bien chez mois, en indiquant le chemin complet du building blocks.dotx.

 

m@rina

Geo  le Tourangeau
A trouvé ceci utile 0
Geo le Tourangeau répondu le

Répondre

Re

Le code que j'ai donné fonctionne très bien chez moi, en indiquant le chemin complet du building blocks.dotx.

Pourtant la différence est ténue.
On va donc retenir ta solution.


A+