Création d'une macro
Résolu
Nanoc_9147
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
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:
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...
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:
- Création d'une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Creation compte gmail - Guide
- Création site web - Guide
- Media creation tool - Télécharger - Systèmes d'exploitation
- Création compte google - Guide
4 réponses
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
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
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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?
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?
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
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
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... :).
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... :).