OVH Cloud OVH Cloud

Comment changer le nom d'un InLineShape via une macro

10 réponses
Avatar
Alain
Salut et merci de bien vouloir me conseiller pour le problème suivant.

Je dois renommer un objet de type "InLineShape" à partir d'un macro.
J'ai trouvé ceci:
"mon_objet.OLEFormat.Object" qui permet d'accéder aux propriétés d'un objet.
J'ai donc fait "mon_objet.OLEFormat.Object.Name = ..." mais ça ne marche
pas.
J'ai bien ajouté "Microsoft ActiveX Data Object" dans les références de mon
projet mais sans succès.
Avez-vous une idée?

Merci d'avance,
Alain.

10 réponses

Avatar
Geo

Salut et merci de bien vouloir me conseiller pour le problème suivant.

Je dois renommer un objet de type "InLineShape" à partir d'un macro.
J'ai trouvé ceci:
"mon_objet.OLEFormat.Object" qui permet d'accéder aux propriétés d'un objet.
J'ai donc fait "mon_objet.OLEFormat.Object.Name = ..." mais ça ne marche
pas.
J'ai bien ajouté "Microsoft ActiveX Data Object" dans les références de mon
projet mais sans succès.
Avez-vous une idée?


Vous êtes dans une macro Word ?
Je ne vois pas ce que vient faire OLE là dedans, mais la propriété name
n'existe pas pour une InLineShape.
Il faudrait la transformer en shape pour la nommer, mais ce n'est plus
le même type (allez, je vais dire : classe, ça fait mieux) d'objet.

--
A+

Avatar
Alain
Merci pour votre réponse.

Mon InLineShape est, en fait, un TextBox et je dois, via une macro Word,
récupérer la valeur contenue dans ce TextBox pour la sauver dans une DB
Access.
Si on ne peut pas attribuer un nom, via une macro Word, à un TextBox,
comment puis-je faire pour récupérer la valeur de ce TextBox (toujours via
une macro Word) ?
J'espère que vous avez une idée...

Alain.


"Geo" a écrit dans le message de
news:

Salut et merci de bien vouloir me conseiller pour le problème suivant.

Je dois renommer un objet de type "InLineShape" à partir d'un macro.
J'ai trouvé ceci:
"mon_objet.OLEFormat.Object" qui permet d'accéder aux propriétés d'un
objet.


J'ai donc fait "mon_objet.OLEFormat.Object.Name = ..." mais ça ne marche
pas.
J'ai bien ajouté "Microsoft ActiveX Data Object" dans les références de
mon


projet mais sans succès.
Avez-vous une idée?


Vous êtes dans une macro Word ?
Je ne vois pas ce que vient faire OLE là dedans, mais la propriété name
n'existe pas pour une InLineShape.
Il faudrait la transformer en shape pour la nommer, mais ce n'est plus
le même type (allez, je vais dire : classe, ça fait mieux) d'objet.

--
A+





Avatar
Geo

Mon InLineShape est, en fait, un TextBox


C'est un shape alors ?
Si vous avez un doute, faites :
Debug.Print ActiveDocument.InlineShapes.Count
Debug.Print ActiveDocument.Shapes.Count

et je dois, via une macro Word,
récupérer la valeur contenue dans ce TextBox pour la sauver dans une DB
Access.
Si on ne peut pas attribuer un nom, via une macro Word, à un TextBox,
comment puis-je faire pour récupérer la valeur de ce TextBox (toujours via
une macro Word) ?


Par l'indice de la TextBox
Exemple :
Debug.Print ActiveDocument.Shapes(1).TextFrame.TextRange

D'ailleurs si vous voulez connaître le nom que lui a donné Word :
Debug.Print ActiveDocument.Shapes(1).name

J'espère que vous avez une idée...


Les idées, ça ne manque pas, même les mauvaises :-)

--
A+

Avatar
Geo
Re

Pour faire le lien avec un de vos précédents messages, on peut donner
un nom à une textBox dès la création :
Dim s As Shape
Set s = ActiveDocument.Shapes.AddTextbox(..., .., .., .., ..)
s.name = "MaTexteBoxPréférée"

--
A+
Avatar
Alain
Merci pour cette idée.
J'ai essayé mais, malheureusement, j'ai besoin de crée des trigger, de
manière dynamique via VBA, pour mes TextBox et il me semble qu'il n'y a pas
de trigger possible pour les TextBox créés avec la commande "AddTextBox".

Bonne journée, Alain.





"Geo" a écrit dans le message de
news:
Re

Pour faire le lien avec un de vos précédents messages, on peut donner
un nom à une textBox dès la création :
Dim s As Shape
Set s = ActiveDocument.Shapes.AddTextbox(..., .., .., .., ..)
s.name = "MaTexteBoxPréférée"

--
A+




Avatar
Alain
Salut!
Maintenant que j'y pense, je crois bien que je suis coincé.
Puisque j'ai besoin de trigger sur mes TextBox, j'ai besoin d'un nom (il me
semble que c'est obligatoire pour la déclaration du trigger) et, pour donner
un nom à un TextBox, il faut qu'il soit une Shape mais les Shapes n'ont pas
de trigger!

Je crois donc que je vais devoir modifier le cahier des charges de mon
travail.

Bonne journée et merci pour votre aide très utile.

Alain.






"Alain" a écrit dans le message de
news:
Merci pour cette idée.
J'ai essayé mais, malheureusement, j'ai besoin de crée des trigger, de
manière dynamique via VBA, pour mes TextBox et il me semble qu'il n'y a
pas

de trigger possible pour les TextBox créés avec la commande "AddTextBox".

Bonne journée, Alain.





"Geo" a écrit dans le message de
news:
Re

Pour faire le lien avec un de vos précédents messages, on peut donner
un nom à une textBox dès la création :
Dim s As Shape
Set s = ActiveDocument.Shapes.AddTextbox(..., .., .., .., ..)
s.name = "MaTexteBoxPréférée"

--
A+








Avatar
Geo

Salut!
Maintenant que j'y pense, je crois bien que je suis coincé.
Puisque j'ai besoin de trigger sur mes TextBox, j'ai besoin d'un nom (il me
semble que c'est obligatoire pour la déclaration du trigger) et, pour donner
un nom à un TextBox, il faut qu'il soit une Shape mais les Shapes n'ont pas
de trigger!


Je sais ce qu'est un trigger en électronique, mais pas dans les
texteBox, si vous pouvez m'éclairer.

Je crois donc que je vais devoir modifier le cahier des charges de mon
travail.


Quand on peut, c'est le plus simple en effet.

--
A+

Avatar
Alain
Je croyais que "trigger" était un terme utilisé de manière commune en VBA.
Je voulais dire "événement"!

Plus j'avance et plus je découvre des choses étrange.
J'ai réussi à donner un nom à un InLineShape converti en Shape.
Catastrophe! Ce n'est pas le meme (désolé pour l'accent mais j'ai un
problème avec mon clavier) nom que celui qui doit etre utilisé pour déclarer
l'événement! Il y a alors 2 nom: celui de l'InLineShape initial et celui du
Shape.
Est-il donc impossible de changer le nom de l'InLineShape initial? J'ai
besoin de changer ce nom pour créer mon événement.

Merci d'avance si vous avez une idée.

Alain.





"Geo" a écrit dans le message de
news:

Salut!
Maintenant que j'y pense, je crois bien que je suis coincé.
Puisque j'ai besoin de trigger sur mes TextBox, j'ai besoin d'un nom (il
me


semble que c'est obligatoire pour la déclaration du trigger) et, pour
donner


un nom à un TextBox, il faut qu'il soit une Shape mais les Shapes n'ont
pas


de trigger!


Je sais ce qu'est un trigger en électronique, mais pas dans les
texteBox, si vous pouvez m'éclairer.

Je crois donc que je vais devoir modifier le cahier des charges de mon
travail.


Quand on peut, c'est le plus simple en effet.

--
A+





Avatar
Geo

Je croyais que "trigger" était un terme utilisé de manière commune en VBA.
Je voulais dire "événement"!


merci

Plus j'avance et plus je découvre des choses étrange.
J'ai réussi à donner un nom à un InLineShape converti en Shape.


D'accord

Catastrophe! Ce n'est pas le meme (désolé pour l'accent mais j'ai un
problème avec mon clavier) nom que celui qui doit etre utilisé pour déclarer
l'événement! Il y a alors 2 nom: celui de l'InLineShape initial et celui du
Shape.
Est-il donc impossible de changer le nom de l'InLineShape initial? J'ai
besoin de changer ce nom pour créer mon événement.


Amha : non puisque la propriété Name n'existe pas pour un inLineShape.

J'ai peur d'être parti dans une mauvaise direction.
On parle d'un textBox dans un document Word ou d'un textBox sur un
formulaire (userform?)

--
A+

Avatar
Alain
"Geo" a écrit dans le message de
news:

Je croyais que "trigger" était un terme utilisé de manière commune en
VBA.


Je voulais dire "événement"!


merci

Plus j'avance et plus je découvre des choses étrange.
J'ai réussi à donner un nom à un InLineShape converti en Shape.


D'accord

Catastrophe! Ce n'est pas le meme (désolé pour l'accent mais j'ai un
problème avec mon clavier) nom que celui qui doit etre utilisé pour
déclarer


l'événement! Il y a alors 2 nom: celui de l'InLineShape initial et celui
du


Shape.
Est-il donc impossible de changer le nom de l'InLineShape initial? J'ai
besoin de changer ce nom pour créer mon événement.


Amha : non puisque la propriété Name n'existe pas pour un inLineShape.





C'est étrange car, si je crée un TextBox de type InLineShape en interactif
(je veux dire avec la "boite à outils Controles"), là j'ai bien dans la
fenetre "Propriétés" la possibilité de donner un nom à mon TextBox...
Enfin, tant pis, je crois bien que je vais envisager d'utiliser un autre
soft pour atteindre mon but.





J'ai peur d'être parti dans une mauvaise direction.
On parle d'un textBox dans un document Word ou d'un textBox sur un
formulaire (userform?)





Oui, il s'agit d'un TextBox dans un document Word.


Bonne journée,
Alain.






--
A+