Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment inserer un objet word art dans une cellule donnée d'un t a.

7 réponses
Avatar
Herve cadieu
Bonjour à tous

Je souhaite creer un tampon wordart qui doit s'appliquer sur une cellule
particuliere d'un tableau, celle ci pouvant changer selon des évenements
différents de mon programme vba , comment faire pour aligner correctement
l'objet wordart et le positionner sur la cellule souhaitée et le lier avec
cette cellule de sorte que l'objet soit à la bonne place à coup sûr ?

Merci de vos réponses
Hervé Cadieu

7 réponses

Avatar
Jean-Guy Marcil
Herve cadieu was telling us:
Herve cadieu nous racontait que :

Bonjour à tous

Je souhaite creer un tampon wordart qui doit s'appliquer sur une
cellule particuliere d'un tableau, celle ci pouvant changer selon des
évenements différents de mon programme vba , comment faire pour
aligner correctement l'objet wordart et le positionner sur la
cellule souhaitée et le lier avec cette cellule de sorte que l'objet
soit à la bonne place à coup sûr ?

Il suffit d'ancrer l'objet sur un des paragraphes de la cellule, ou de

mettre l'objet "aligné sur le texte" dans la cellule.

Quel code utilises-tu pour insérer l'objet?

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
Herve cadieu
selection.activecell.select
ActiveDocument.Shapes.AddTextEffect(msoTextEffect3, _
"Grapho-Lock™©®" & Chr(10) & "Certified" & Chr(10) & printdate &
Chr(10) & "Secured Technology", "Arial Black", 10#, msoFalse, _
msoFalse, 217.5, 162#).Select
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(255, 0, 0)
Selection.ShapeRange.Fill.Transparency = 0.7
Selection.ShapeRange.Line.Weight = 0.1
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Visible = msoFalse
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Rotation = -15#
Selection.ShapeRange.LockAnchor = True
Selection.ShapeRange.LayoutInCell = True
Selection.ShapeRange.WrapFormat.AllowOverlap = True
Selection.ShapeRange.WrapFormat.Side = wdWrapBoth
Selection.ShapeRange.WrapFormat.DistanceTop = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.DistanceBottom = CentimetersToPoints(0)
Selection.ShapeRange.WrapFormat.Type = 3
Selection.ShapeRange.ZOrder 1
Selection.ShapeRange.TextEffect.PresetShape =
msoTextEffectShapeButtonCurve
Selection.ShapeRange.ScaleWidth 0.96, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.IncrementLeft -130#
Selection.ShapeRange.IncrementTop -1.1
Selection.Collapse

voila le code et il suffit ce n'est pas une réponse ! Merci


Herve cadieu was telling us:
Herve cadieu nous racontait que :

Bonjour à tous

Je souhaite creer un tampon wordart qui doit s'appliquer sur une
cellule particuliere d'un tableau, celle ci pouvant changer selon des
évenements différents de mon programme vba , comment faire pour
aligner correctement l'objet wordart et le positionner sur la
cellule souhaitée et le lier avec cette cellule de sorte que l'objet
soit à la bonne place à coup sûr ?

Il suffit d'ancrer l'objet sur un des paragraphes de la cellule, ou de

mettre l'objet "aligné sur le texte" dans la cellule.

Quel code utilises-tu pour insérer l'objet?

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org







Avatar
Jean-Guy Marcil
Herve cadieu was telling us:
Herve cadieu nous racontait que :

Désolé de vous avoir froissé. Le pauvre bénévole que je suis avais cru lire
en lisant le message original que la personne posant la question(n'ayant pas
donné beaucoup de détails) saurait se tirer d'affaires avec une réponse tout
aussi brève en détails. Surtout que je n'avais pas envie d'essayer
d'imaginer de quelle façon vous vous y preniez et donc tester toutes sortes
de scénarios qui se rapporcheraient de la réalité et qui vous serait utile.
Merci de me le rappeler. La prochaine fois le bénévole passera quelques
heures à écrire une réponse qui proposera une multitude de solutions et qui
prendra en considération une foule de posssibilités tout en tenant compte
des différentes versions Word sur le marché.

selection.activecell.select


"activecell" n'est pas un objet/propriété en Word VBA.

ActiveDocument.Shapes.AddTextEffect(msoTextEffect3, _
"Grapho-LockT©®" & Chr(10) & "Certified" & Chr(10) & printdate
& Chr(10) & "Secured Technology", "Arial Black", 10#, msoFalse, _
(...)

Selection.ShapeRange.IncrementTop -1.1 Selection.Collapse

voila le code et il suffit ce n'est pas une réponse ! Merci



Maintenant que j'ai vu le code que vous utilisiez, j'ai pu, en quelques
minutes vous trouver une solution. N'ayant jamais fait ce genre d'opéaration
moi-même, il se peut que ma solution ne soit pas adéquate, surtout que vous
mentionnez dans votre premier message:
<citation>
s'appliquer sur une cellule particuliere d'un tableau, celle ci pouvant
changer selon des évenements différents de mon programme vba
<fin citation>

Les différents événements de votre code vba pourraient très bien rendre ma
solution inadéquate. Et ne parlons pas du fait que le contenu de la cellule
de départ peut aussi avoir un impact sur le résultat. Finalement, il faut
inclure au code des tests pour s'assurer qu'aucune erreur "bête" ne sera
générée (par example, si le curseur n'est pas dans un tableau, la police
choisie n'existe pas sur le système, etc.). Vous m'excuserez de ne pas
essayer d'imaginer quels pourraient bien être ces différents événements (et
facteurs "environnementaux", si je peux m'exprimer ainsi!) et donc de ne pas
proposer d'autres altenatives. Il suffit d'essayer mon code.

En passant, je vois que vous avez utilisé l'enregistreur de macro. C'est
bien pour voir qu'est-ce qui ce passe et trouver les
fonctions/méthodes/propriétés à utiliser. Je le fais moi-même assez souvent.
Par contre, il faut retrtavailler le code pour le rendre plus efficace,
moins dépendant du contexte et plus robuste. Par example, l'enregistreur
utilise touours l'objet Selection. Dans le code final, il vaut mieux
l'enlever car cet objet peut causer toutes sorte de probleèms. Il vaut
mieux, AMHA, utiliser l'objet Range. Aussi, pour accélerer le code et
résuire l'utilisation de la mémoire, il vaut mieux utiliser des blocs
"With...End With" plutôt que de répéter les mèmes objets sans cesse. Mon
code démontre ces deux point. J'ai dû utiliser l'objet Selection car
InlineShape ne dispose pas de la propriété Copy.

'_______________________________________
Sub InsereTamponDansCellule()

Dim MyTextShape As Shape
Dim MyInlineTextShape As InlineShape
Dim CellRange As Range
Dim PrintDate As Date

PrintDate = Now

Set CellRange = Selection.Cells(1).Range.Paragraphs(1).Range

Set MyTextShape = ActiveDocument.Shapes.AddTextEffect(msoTextEffect3, _
"Grapho-LockT©®" & Chr(10) & "Certified" & Chr(10) & PrintDate & _
Chr(10) & "Secured Technology", "Arial Black", 10#, msoFalse, _
msoFalse, 0, 0, CellRange)
With MyTextShape
With .Fill
.Visible = msoTrue
.Solid
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0.7
End With
With .Line
.Weight = 0.1
.DashStyle = msoLineSolid
.Visible = msoFals
End With
.LockAspectRatio = msoFalse
.Rotation = -15#
.LockAnchor = True
.LayoutInCell = True
With .WrapFormat
.AllowOverlap = True
.Side = wdWrapBoth
.DistanceTop = CentimetersToPoints(0)
.DistanceBottom = CentimetersToPoints(0)
.Type = 3
End With
.ZOrder 1
.TextEffect.PresetShape = msoTextEffectShapeButtonCurve
.ScaleWidth 0.96, msoFalse, msoScaleFromTopLeft
Set MyInlineTextShape = .ConvertToInlineShape
End With

With MyInlineTextShape
.Select
Selection.Copy
.Delete
End With

CellRange.Paste

End Sub
'_______________________________________

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
Anacoluthe
Bonjour !

Très joli code Jean-Guy ! :-)

Mais tu perds sans doute ton temps de 'pauvre bénévole'
( très bien tes remarques de pauvre bénévole ! )

Herve ne sait pas bien expliquer ce qu'il veut, change de ficelle,
n'utilise que l'enregistreur, et s'étonne que nos réponses tombent
à côté. Aussi il y a toutes les chances que ton code ne lui
convienne qu'en partie... :-(

D'abord tu fais un tampon InLine : à tous le coups il veut que son
tampon tamponne par dessus (comme un vrai tammpon!). Très facile à
modifier bien sûr mais saura-t-il ? ça dépend aussi de son option
de copie d'image puisque tu fais un paste à la fin. Ensuite il a
enregistré avec Selection (comme tous ceux qui enregistrent) mais
à tous les coups il veut placer son tampon dans une cellule précise.
On pourrait faire un ancrage sur cellule du genre With MyTextShape
.RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
.RelativeVerticalPosition = wdRelativeVerticalPositionLine
à moins qu'il veuille continuer dans son idée d'ancrage sur la page,
puis il faudra centrer son tampon sur la cellule etc ...

Dur dur pour un 'pauvre bénévole' ;-) )))))))))))

Anacoluthe
« Si on payait mieux les bénévoles, ça donnerait peut-être
envie à plus de gens de travailler gratuitement. »
- Philippe GELUCK


'Jean-Guy Marcil' nous a écrit ...
Herve cadieu was telling us:
Herve cadieu nous racontait que :

Désolé de vous avoir froissé. Le pauvre bénévole que je suis avais cru lire
en lisant le message original que la personne posant la question(n'ayant pas
donné beaucoup de détails) saurait se tirer d'affaires avec une réponse tout
aussi brève en détails. Surtout que je n'avais pas envie d'essayer
d'imaginer de quelle façon vous vous y preniez et donc tester toutes sortes
de scénarios qui se rapporcheraient de la réalité et qui vous serait utile.
Merci de me le rappeler. La prochaine fois le bénévole passera quelques
heures à écrire une réponse qui proposera une multitude de solutions et qui
prendra en considération une foule de posssibilités tout en tenant compte
des différentes versions Word sur le marché.


selection.activecell.select



"activecell" n'est pas un objet/propriété en Word VBA.


ActiveDocument.Shapes.AddTextEffect(msoTextEffect3, _
"Grapho-LockT©®" & Chr(10) & "Certified" & Chr(10) & printdate
& Chr(10) & "Secured Technology", "Arial Black", 10#, msoFalse, _


(...)

Selection.ShapeRange.IncrementTop -1.1 Selection.Collapse

voila le code et il suffit ce n'est pas une réponse ! Merci




Maintenant que j'ai vu le code que vous utilisiez, j'ai pu, en quelques
minutes vous trouver une solution. N'ayant jamais fait ce genre d'opéaration
moi-même, il se peut que ma solution ne soit pas adéquate, surtout que vous
mentionnez dans votre premier message:
<citation>
s'appliquer sur une cellule particuliere d'un tableau, celle ci pouvant
changer selon des évenements différents de mon programme vba
<fin citation>

Les différents événements de votre code vba pourraient très bien rendre ma
solution inadéquate. Et ne parlons pas du fait que le contenu de la cellule
de départ peut aussi avoir un impact sur le résultat. Finalement, il faut
inclure au code des tests pour s'assurer qu'aucune erreur "bête" ne sera
générée (par example, si le curseur n'est pas dans un tableau, la police
choisie n'existe pas sur le système, etc.). Vous m'excuserez de ne pas
essayer d'imaginer quels pourraient bien être ces différents événements (et
facteurs "environnementaux", si je peux m'exprimer ainsi!) et donc de ne pas
proposer d'autres altenatives. Il suffit d'essayer mon code.

En passant, je vois que vous avez utilisé l'enregistreur de macro. C'est
bien pour voir qu'est-ce qui ce passe et trouver les
fonctions/méthodes/propriétés à utiliser. Je le fais moi-même assez souvent.
Par contre, il faut retrtavailler le code pour le rendre plus efficace,
moins dépendant du contexte et plus robuste. Par example, l'enregistreur
utilise touours l'objet Selection. Dans le code final, il vaut mieux
l'enlever car cet objet peut causer toutes sorte de probleèms. Il vaut
mieux, AMHA, utiliser l'objet Range. Aussi, pour accélerer le code et
résuire l'utilisation de la mémoire, il vaut mieux utiliser des blocs
"With...End With" plutôt que de répéter les mèmes objets sans cesse. Mon
code démontre ces deux point. J'ai dû utiliser l'objet Selection car
InlineShape ne dispose pas de la propriété Copy.

'_______________________________________
Sub InsereTamponDansCellule()

Dim MyTextShape As Shape
Dim MyInlineTextShape As InlineShape
Dim CellRange As Range
Dim PrintDate As Date

PrintDate = Now

Set CellRange = Selection.Cells(1).Range.Paragraphs(1).Range

Set MyTextShape = ActiveDocument.Shapes.AddTextEffect(msoTextEffect3, _
"Grapho-LockT©®" & Chr(10) & "Certified" & Chr(10) & PrintDate & _
Chr(10) & "Secured Technology", "Arial Black", 10#, msoFalse, _
msoFalse, 0, 0, CellRange)
With MyTextShape
With .Fill
.Visible = msoTrue
.Solid
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0.7
End With
With .Line
.Weight = 0.1
.DashStyle = msoLineSolid
.Visible = msoFals
End With
.LockAspectRatio = msoFalse
.Rotation = -15#
.LockAnchor = True
.LayoutInCell = True
With .WrapFormat
.AllowOverlap = True
.Side = wdWrapBoth
.DistanceTop = CentimetersToPoints(0)
.DistanceBottom = CentimetersToPoints(0)
.Type = 3
End With
.ZOrder 1
.TextEffect.PresetShape = msoTextEffectShapeButtonCurve
.ScaleWidth 0.96, msoFalse, msoScaleFromTopLeft
Set MyInlineTextShape = .ConvertToInlineShape
End With

With MyInlineTextShape
.Select
Selection.Copy
.Delete
End With

CellRange.Paste

End Sub
'_______________________________________




Avatar
Jean-Guy Marcil
Anacoluthe was telling us:
Anacoluthe nous racontait que :

Bonjour !

Très joli code Jean-Guy ! :-)


Merci!

Mais tu perds sans doute ton temps de 'pauvre bénévole'
( très bien tes remarques de pauvre bénévole ! )

Herve ne sait pas bien expliquer ce qu'il veut, change de ficelle,
n'utilise que l'enregistreur, et s'étonne que nos réponses tombent
à côté. Aussi il y a toutes les chances que ton code ne lui
convienne qu'en partie... :-(


C'est ton pote? Tu sembles bien le connaître!

D'abord tu fais un tampon InLine : à tous le coups il veut que son
tampon tamponne par dessus (comme un vrai tammpon!). Très facile à
modifier bien sûr mais saura-t-il ? ça dépend aussi de son option


Je ne suis pas devin moi! ;-) Je suis bénévole!

de copie d'image puisque tu fais un paste à la fin. Ensuite il a
enregistré avec Selection (comme tous ceux qui enregistrent) mais
à tous les coups il veut placer son tampon dans une cellule précise.
On pourrait faire un ancrage sur cellule du genre With MyTextShape
.RelativeHorizontalPosition = wdRelativeHorizontalPositionColumn
.RelativeVerticalPosition = wdRelativeVerticalPositionLine
à moins qu'il veuille continuer dans son idée d'ancrage sur la page,
puis il faudra centrer son tampon sur la cellule etc ...


J'y avais penser... mais je me suis dis..."J'en ai assez fait pour le
moment, je ne me taperai pas le taponnage de mesurer la position du curseur
dans la cellule, puis d'utiliser ces variables pour placer le tampon..."
Comme disais Gaston, M'enfin!

Dur dur pour un 'pauvre bénévole' ;-) )))))))))))

Anacoluthe
« Si on payait mieux les bénévoles, ça donnerait peut-être
envie à plus de gens de travailler gratuitement. »
- Philippe GELUCK




Comment tu fais pour toujours avoir des citations à propos (enfin,
sont-elles toutes des citations? Et ne devraient-elles pas toutes êtres des
phrases en discontinuités? ;-)
--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org

Avatar
Geo
Bonjour Jean-Guy


[...]
Comme disais Gaston, M'enfin!


J'admire ta culture des bandes dessinées en français.
J'entends souvent dire que les Quécois sont des américains qui parlent
français, ben je vois qu'ils ont quand même une bonne culture européenne.
francophones

Comment tu fais pour toujours avoir des citations à propos (enfin,
sont-elles toutes des citations? Et ne devraient-elles pas toutes
êtres des phrases en discontinuités? ;-)


Il a tenté un jour d'arrêter, il a reçu tellement de reproches
qu'il a choisi entre deux maux : il continue !
pour notre plus grand plaisir.

--

A+

Avatar
Jean-Guy Marcil
Geo was telling us:
Geo nous racontait que :

Bonjour Jean-Guy


[...]
Comme disais Gaston, M'enfin!


J'admire ta culture des bandes dessinées en français.
J'entends souvent dire que les Quécois sont des américains qui parlent


Non, mais, quelle insulte!
Qui qui dit ça? Ils méritent de manger des frites graisseuses et de boire de
la bière américaine pour le restant de leurs jours!

--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP

Word MVP site: http://www.word.mvps.org