Création d'une macro

Résolu/Fermé
Nanoc_9147 Messages postés 2 Date d'inscription jeudi 26 septembre 2019 Statut Membre Dernière intervention 26 septembre 2019 - Modifié le 26 sept. 2019 à 19:24
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 - 29 sept. 2019 à 11:54
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
A voir également:

4 réponses

m@rina Messages postés 20971 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 30 septembre 2024 11 330
27 sept. 2019 à 19:01
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
1
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 Ambassadeur 1 538
26 sept. 2019 à 21:05
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?
0
Nanoc_9147 Messages postés 2 Date d'inscription jeudi 26 septembre 2019 Statut Membre Dernière intervention 26 septembre 2019
26 sept. 2019 à 21:26
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
0
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... :).
0
yg_be Messages postés 23235 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 septembre 2024 1 538
29 sept. 2019 à 11:54
parfait! peux-tu alors marquer le sujet comme résolu via la roue dentée à droite du titre?
0