OVH Cloud OVH Cloud

A peine débutant en Macro...

5 réponses
Avatar
Dominique Ceugniet
Bonjour à tous !

J'ai bien essayé mais...je me retrouve sans voix très vite...

Suivant les conseils du B A BA de VBA, d'Anacoluthe, j'ai essayé
d'enregistrer dans une macro (euh, c'est ma première macro, ceci explique
peut-être cela...), la séquence suivante :
"Format Image" "Habillage" "Rapproché" "Avancé" "décocher 'déplacer avec le
texte'" "décocher 'Autoriser le chevauchement de texte'" "alignement
horizontal centré" " par rapport à marge" "alignement vertical centré" "par
rapport à marge" "ok" "ok"

Ce faisant, j'ai constaté qu'à partir de "habillage", toutes les options
sont grisées ! Je ne peux pas continuer ! Il va sans dire, que la macro ne
marche pas, vu que j'ai à peine commencé l'enregistrement.

Peut-être faut-il y aller à la main, mais pour cela, il faudrait que je
connaisse le vocabulaire ! Par exemple, en regardant le code généré, je
trouve : "Selection.InlineShapes(1).PictureFormat.CropTop = 0# ", ce qui ne
me dérange en aucune façon, mais, si j'avais voulu écrire cela moi-même,
encore aurait-il fallu que je connaisse le mot "InlineShape", mais aussi le
mot "PictureFormat", ainsi que le mot "CropTop". J'ai beau cliquer sur
InlineShape dans l'aide intuitive, je ne parviens pas à obtenir le mot
"PictureFormat" dans une liste, ce qui m'aiderait à faire le lien entre ces
codes et les mots utilisés sous Word, comme "habillage", ou "Aligné avec le
texte"...

Donc, ce n'est pas preuve de mauvaise volonté, mais, je me retrouve tout de
suite coincé !

Peut-être en ai-je trop demandé ! Une simple macro qui me ferait ""Format
Image" "Habillage" "Rapproché" "OK" "OK" me conviendrait amplement !

Comment faire ?

Où trouver des exemples de macros pour que je puisse apprendre le
vocabulaire spécifique "par la bande" ?

Merci d'avance pour votre aide !

5 réponses

Avatar
Circ
Bonsoir Dominique,

Ben, si c'est ta première macro, tu commences fort !!! :D

Comme il est dit dans l'article, Les commandes et fonctions déclenchées
au clavier ou à la souris par l’utilisateur peuvent pratiquement toutes
être enregistrées... Heureusement qu'il y a le mot "pratiquement" qui
signifie "pas toutes" !!!!

Et en l'occurence tu souhaites mettre un habillage à une image, ça ne
se fera pas avec l'enregistreur.

En macro, on traduit ton souhait par transformer un inlineshape en
shape.
Les inlineshapes sont les objets alignés sur le texte, ils font partie
de la couche texte.
Les shapes sont des objets flottants et ne se comportent pas comme du
texte.

La commande "converToShape" permet de transformer les inlineshapes en
shapes. Pour transformer le premier inlineshape du document en cours :
ActiveDocument.InlineShapes(1).ConvertToShape

Une fois que ton image est un shape, tu pourra lui donner diverses
propriétés, y compris avec l'enregistreur.
Cela dit, méfie toi de l'enregistreur qui va te faire une macro aussi
lourde qu'un Kouign Aman ! :D

Circé
http://faqword.free.fr



Il se trouve que Dominique Ceugniet a formulé :
Bonjour à tous !

J'ai bien essayé mais...je me retrouve sans voix très vite...

Suivant les conseils du B A BA de VBA, d'Anacoluthe, j'ai essayé
d'enregistrer dans une macro (euh, c'est ma première macro, ceci explique
peut-être cela...), la séquence suivante :
"Format Image" "Habillage" "Rapproché" "Avancé" "décocher 'déplacer avec le
texte'" "décocher 'Autoriser le chevauchement de texte'" "alignement
horizontal centré" " par rapport à marge" "alignement vertical centré" "par
rapport à marge" "ok" "ok"

Ce faisant, j'ai constaté qu'à partir de "habillage", toutes les options
sont grisées ! Je ne peux pas continuer ! Il va sans dire, que la macro ne
marche pas, vu que j'ai à peine commencé l'enregistrement.

Peut-être faut-il y aller à la main, mais pour cela, il faudrait que je
connaisse le vocabulaire ! Par exemple, en regardant le code généré, je
trouve : "Selection.InlineShapes(1).PictureFormat.CropTop = 0# ", ce qui ne
me dérange en aucune façon, mais, si j'avais voulu écrire cela moi-même,
encore aurait-il fallu que je connaisse le mot "InlineShape", mais aussi le
mot "PictureFormat", ainsi que le mot "CropTop". J'ai beau cliquer sur
InlineShape dans l'aide intuitive, je ne parviens pas à obtenir le mot
"PictureFormat" dans une liste, ce qui m'aiderait à faire le lien entre ces
codes et les mots utilisés sous Word, comme "habillage", ou "Aligné avec le
texte"...

Donc, ce n'est pas preuve de mauvaise volonté, mais, je me retrouve tout de
suite coincé !

Peut-être en ai-je trop demandé ! Une simple macro qui me ferait ""Format
Image" "Habillage" "Rapproché" "OK" "OK" me conviendrait amplement !

Comment faire ?

Où trouver des exemples de macros pour que je puisse apprendre le
vocabulaire spécifique "par la bande" ?

Merci d'avance pour votre aide !


Avatar
Dominique Ceugniet
Bonjour, Circé !

Ben, si c'est ta première macro, tu commences fort !!!


Ah bon ! J'avais pourtant annoncé la couleur !

Mon intérêt pour les macros provient de ma dernière question "Habillage
image par défaut" du 23/11/06, ci-dessus, dialogue auquel tu avais d'ailleurs
gentiment participé. Tisane m'avait suggéré d'utiliser une macro, et tu
m'avais indiqué comment commencer !

La commande "converToShape" permet de transformer les inlineshapes en
shapes. Pour transformer le premier inlineshape du document en cours :
ActiveDocument.InlineShapes(1).ConvertToShape


Merci du tuyau, je vais essayer !

Mais ta réponse même confirme bien qu'il faut connaître le vocabulaire, le
nom des commandes, etc... Et apparemment, l'aide du VBA ne fournit pas ces
renseignements ! "converToShape" ou "convertToShape", ça ne s'invente pas !
Il faut savoir !

Il me reste donc la question : "Où trouver des exemples de macros pour que
je puisse apprendre le vocabulaire spécifique "par la bande" ? "

Anacoluthe fait référence à des macros que l'on peut trouver sur le forum et
que l'on peut recopier ! Ca peut être aussi par l'exemple qu'on peut
apprendre peu à peu une commande, une autre, etc...

Cela dit, méfie toi de l'enregistreur qui va te faire une macro aussi
lourde qu'un Kouign Aman !


Se méfier, c'est le privilège de ceux qui savent ! Quelle action pourrais-je
faire si j'ai le sentiment qu'il y a lieu de se méfier ? Absolument aucune !
Si je ne comprends pas entièrement ce qui se passe, je ne peux me risquer à
aucune intervention manuelle ! Je ne pourrais pas "décider" d'ôter telle ou
telle ligne si j'ai le sentiment qu'il y a lieu de s'en méfier !

Pourrais-tu préciser à quelle genre de catastrophe je m'expose si je ne me
"méfie" pas suffisamment de l'enregistreur ? Un ralentissement ? Un plantage
de Word ? Un plantage de Windows ? Une implosion de mon écran ?

D'ailleurs, la référence au "Kouign Aman" n'est pas adéquate ! Ce n'est pas
lourd ! C'est un délice !

Merci en tous cas de ton aide, je vais essayer "ConvertToShape" à la main !

Dominique

Avatar
Dominique Ceugniet

La commande "converToShape" permet de transformer les inlineshapes en
shapes. Pour transformer le premier inlineshape du document en cours :
ActiveDocument.InlineShapes(1).ConvertToShape


Merci mille fois Circé ! Ca marche tout seul ! Impeccable ! Tu viens de me
faire gagner un temps considérable !

(Euh, il me reste quand même encore quelques questions ci-dessus sans
réponse)

Avatar
Geo

Mais ta réponse même confirme bien qu'il faut connaître le vocabulaire, le
nom des commandes, etc... Et apparemment, l'aide du VBA ne fournit pas ces
renseignements ! "converToShape" ou "convertToShape", ça ne s'invente pas !
Il faut savoir !
Il faut dire que vous êtes tombé directement dans un des cas les plus

difficile. D'aucun y ont passé des heures.

Il me reste donc la question : "Où trouver des exemples de macros pour que
je puisse apprendre le vocabulaire spécifique "par la bande" ? "

Anacoluthe fait référence à des macros que l'on peut trouver sur le forum et
que l'on peut recopier ! Ca peut être aussi par l'exemple qu'on peut
apprendre peu à peu une commande, une autre, etc...


Oui, il y a amha deux solutions :
Suivre un cours du commerce pour apprendre tout le vba
- ou -
Apprendre au fur et à mesure des besoins par l'expérience personnelle
ou l'expérience des autres.

La bonne solution dépend de chaque individu et du contexte.

Pourrais-tu préciser à quelle genre de catastrophe je m'expose si je ne me
"méfie" pas suffisamment de l'enregistreur ?
Un ralentissement ?
Oui, le code n'est pas optimisé, mais si ça dure quelques millièmes de

seconde ça n'a pas d'importance.
Il y a des macros qui tournent des heures et là ça devient critique.
Autre défaut plus pernicieux, les macros enregistrées reproduisent
l'utilisation du clavier, ce qui n'est pas forcément pertinent et
parfois difficile à adapter.
Par exemple : sélectionner une cellule de tableau peut se faire en vba
par un accès direct à la cellule. Avec le clavier, on va descendre le
curseur, puis le déplacer latéralement, puis sélectionner la cellule.
Quand il s'agit d'aller à la dernière ligne -par exemple- d'un tableau,
l'opérateur sait quand arrêter car il voit le tableau.
En vba il y a d'autres techniques et ce n'est plus de l'adaptation,
c'est de l'écriture.

Un plantage de Word ?
Pas spécialement, on y arrive bien mieux en écrivant soi-même le code.

:-D

Un plantage de Windows ? Une implosion de mon écran ?
Non non


D'ailleurs, la référence au "Kouign Aman" n'est pas adéquate ! Ce n'est pas
lourd ! C'est un délice !


entièrement d'accord, ça graisse juste un peu les doigts, qu'on lèche
ensuite avec plaisir.

--
A+

Avatar
Circé
Bonsoir Dominique,

Dominique Ceugniet vient de nous annoncer :


La commande "converToShape" permet de transformer les inlineshapes en
shapes. Pour transformer le premier inlineshape du document en cours :
ActiveDocument.InlineShapes(1).ConvertToShape


Merci mille fois Circé ! Ca marche tout seul ! Impeccable ! Tu viens de me
faire gagner un temps considérable !

(Euh, il me reste quand même encore quelques questions ci-dessus sans
réponse)


Bon, il me semble que Geo a répondu à tout...
J'espère que tu as regardé dans la faq les exemples de macros, il y en
a un certain nombre.

Pour ce qui est du Kouign Aman, c'est effectivement bon... Y a des
choses lourdes qui sont succulentes !!! :D

Circé