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!
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
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+
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 ...
Re
Essayez avec :
ActiveDocument.AttachedTemplate.BuildingBlockEntries(123). _
A+
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+
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
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+
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+
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
* Essayez d'entrer un numéro de page plus petit.
* N'entrez que des chiffres.
