Bonjour,
Je me permets de solliciter vos neurones pour un petit problème que je ne réussis pas à résoudre.
J'ai un petit document Word, appelé poétiquement ZonesDeTextes.docx où se trouvent 2 "Shapes". Ce sont deux rectangles vides (des "Shapes") au beau milieu de la feuille du document Word.
J'ai utilisé l'instruction oWord.ActiveDocument.Shape(1).TextFrame.TextRange.Text =" ", pour inscrire du texte dans ces 'shapes' directement à partir du code.
Ensuite, j'ai beau eu chercher, je n'ai pas trouvé le moyen de :
1) mettre le curseur sur une des 'Shapes', à partir de l'écriture du code. J'ai bien trouvé 'Focus' dans Mdsn, mais je ne sais pas comment l'utiliser.
2) passer de la Shape sous Focus à une autre, Shape(3), située dans un autre document Word, lorsque le nombre de caractères écrits dans la shape(1) est supérieur à celui voulu.
j'ai trouvé sur mdsn de microsoft une fonction Shape.KeyPress. Il s'agit vraisemblablement d'un évènement qui apparaît lors de la frappe d'une touche, quand la 'Shape' a le focus.
Il y a un exemple de Procédure, que j'ai largement arrangé, avec un compteur, et qui n'est probablement pas dénué d'erreurs :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Dim i As Integer
Dim imax As Integer = 20
While i < imax
RectangleShape_KeyPress(??????)
Wend
Else
oWord.ActiveDocument.Open(c/:...Document2.docx)
Shape(4).Focus
End
Private Sub RectangleShape_KeyPress(Byval sender As Object, Byval e As System.Forms.KeyPressEventArgs) Handles RectangleShape_KeyPress
Dim ch As Char
ch = e.KeyChar
oWord.ActiveDocument.Shapes(4).TextFrame.TextRange.Text = ch
i=i+1
End Sub |
J'y ai donc trouvé le contrôle "RectangleShape".
D'une part, si jamais ça ne devait pas être trop à côté de la plaque, je ne sais pas trop quoi mettre à la place des ?????? dans
RectangleShape_KeyPress(??????)
D'autre part, avant même la question de l'argument à entrer dans la fonction RectangleShape_KeyPress(), j'ai tenté l'écriture du code précédent.
Il ne m'a pas fallu longtemps pour avoir une erreur :
Dans :
1 2 3
| RectangleShape_KeyPress(ByVal sender As Objet, ByVal e As System.Forms.KeyPressEventArgs) Handles RectangleShape.KeyPress
System.Forms.KeyPressEventArgs n'est pas reconnu
ni RectangleShape (après Handles...) |
J'ai tenté
Imports Microsoft.VisualBasic.PowerPacks
car Shape.Keypress est dans l'espace de nom Microsoft.VisualBasic.PowerPacks mais l'éditeur ne le prend pas 'PowerPacks'...
En attente de vos suggestions,
Merci, Grég
Partager