Création d'une macro [Résolu]

Messages postés
2
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
26 septembre 2019
-
Bonjour,

Je cherche a créer une macro qui me permette de mettre en forme un tableau en définissant le retrait par rapport à la marge de gauche et la taille des deux colonnes.
J'ai essayé d'enregistrer une macro, mais lorsque je la lance j'ai comme résultat :
"Erreur d'exécution '4605':
La méthode ou propriété SelectColumn n'est pas disponible à cause de tous ou certain objets ne font pas référence à un tableau."
Alors que si je fais la même chose manuellement, ça fonctionne.

Je colle le code VBA de ma macro une fois enregistrée:

Sub Macro2Nico()
'
' Macro2Nico Macro
'
'
    Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
    Selection.Columns.PreferredWidth = CentimetersToPoints(1)
    Selection.Move Unit:=wdColumn, Count:=1
    Selection.SelectColumn (l'erreur semble être ici)
    Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
    Selection.Columns.PreferredWidth = CentimetersToPoints(1.5)
    Selection.Move Unit:=wdColumn, Count:=1
    Selection.SelectColumn
    Selection.Tables(1).Rows.LeftIndent = CentimetersToPoints(2.75)
    Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
    Selection.Columns.PreferredWidth = CentimetersToPoints(11)
End Sub


J'ai prés de 500 tableaux à mettre en forme de la sorte, il s'agit d'une mise en forme des exemple que ma femme utilise pour les exemples de sa thèse.

D'avance merci pour votre écoute et aide...


Configuration: Configuration: Windows / Firefox 69.0
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
15549
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
19 octobre 2019
8742
1
Merci
Bonjour,

Il n'y a pas pire code que celui qu'on enregistre. On va dire que l'enregistrement de macros est très utile pour trouver des solutions à ce qu'on cherche. Cela permet d'avoir la syntaxe, et accessoirement de connaître les noms des méthodes, propriétés, etc.

Donc, ton code est très mauvais. Dis nous plutôt ce que tu veux faire exactement.

m@rina

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 65020 internautes nous ont dit merci ce mois-ci

Commenter la réponse de m@rina
Messages postés
8759
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2019
436
0
Merci
bonjour, quand tu as un message d’erreur, il est important de nous indiquer à quelle ligne il se produit.
ta macro semble travailler sur l'élément sélectionné.
es-tu certain d'avoir sélectionné, avant d'exécuter la macro, le même élément que tu avais sélectionné avant d'enregistrer la macro?
Commenter la réponse de yg_be
Messages postés
2
Date d'inscription
jeudi 26 septembre 2019
Statut
Membre
Dernière intervention
26 septembre 2019
0
Merci
Merci pour ta réponse.
D'après ce que je comprends, c'est à la ligne 9 que se situe l'erreur.
J'ai recommencé l'enregistrement en ne selectionant pas le tableau avant de l'enregistrer, et je parviens à la faire fonctionner, mais pas tout le temps.
De plus ca me configure des valeurs approximatives style 1,47 au lieu de 1,5 et 10,53 au lieu de 11cm.

le code donne ça du coup:

Sub MaNicro()
'
' MaNicro Macro
'
'
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
Selection.MoveDown Unit:=wdLine, Count:=3, Extend:=wdExtend
Selection.MoveUp Unit:=wdLine, Count:=3, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdExtend
Selection.Move Unit:=wdColumn, Count:=1
Selection.SelectColumn
Selection.Columns.PreferredWidthType = wdPreferredWidthPoints
Selection.Columns.PreferredWidth = CentimetersToPoints(1.5)
Selection.Move Unit:=wdColumn, Count:=1
Selection.SelectColumn
Selection.Tables(1).Rows.LeftIndent = CentimetersToPoints(2.75)
Selection.Tables(1).PreferredWidthType = wdPreferredWidthPoints
Selection.Tables(1).PreferredWidth = CentimetersToPoints(12.5)
End Sub
Commenter la réponse de Nanoc_9147
0
Merci
Bonjour,
Alors, j'ai totalement conscience de ce que tu dis là. Il est évident que l'enregistrement d'une macro sert au néophyte que je suis à bêtement reproduire une série de clics sur Word.

Dans le premier doc que j’avais (le premier chapitre de la thèse de ma femme), je souhaitais à partir de tableau existant (en fait il s'agissait d'exemple numéroté que ma femme à mis en forme de tableau) formater ces tableaux à 2,75 cm de retrait,
avec la première colonne d'une largeur de 1,5cm
et la seconde de 11 cm
avec une largeur totale du tableau de 12,5cm.

Cela ne marchait pas en réglant les 4 variables d'un coup.
En faisant une macro par variable, j'y suis arrivé.
Le code que j'ai obtenu n'est pas du tout optimisé mais j'ai réussi à faire les 125 tableaux en quelques secondes donc objectif atteint.

Dans le second Doc (chapitre 2,3 et conclusion) je pars d'une mise en page d'exemple numérotés avec des puces. Du coup ça me rajoute beaucoup d'étapes:
Couper
Coller (juste le texte pour conserver le numéros de puce)
mettre en forme avec un style définit
Mettre dans un tableau
formater le tableau comme dans le doc 1
rajouter une ligne au dessus et une ligne au dessous avec la bonne taille de police et parfois entre les exemples qui se suivent.
mettre en italique le texte copié
enlever le cadre
supprimer le texte d'origine.

Et cela pour plus de 400 exemples.

En créant des raccourcis clavier + macro très simple le tout configuré sur les boutons latéraux de ma G600, j'arrive à faire chaque exemple en une petite minute.

Et je suis bien content d'être arrivé à ça... :).
yg_be
Messages postés
8759
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 octobre 2019
436 -
parfait! peux-tu alors marquer le sujet comme résolu via la roue dentée à droite du titre?
Commenter la réponse de Nanoc_9147