Zone de texte sur image [Résolu]

gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 juin 2014 à 19:12 - Dernière réponse : gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention
- 20 juin 2014 à 14:32
re-Bonjour,

Je sais que je suis très demandeur ces temps-ci et j'espère n'importuner personne par mes questions incessantes...

J'ai à nouveau un écueil à évoquer avec ceux qui veulent bien y prendre part. Il s'agit d'insérer du texte sur des images en vous demandant s'il est possible de leur attribuer un nom ou une valeur.

J'ai donné un exemple de ce qui serait attendu :

http://cjoint.com/?DFttiW4O7Rx

(avec le problème des cases qui seraient cochées selon la réponse dans le formulaire...)

Dans ce cas, qu'est-ce qui serait le mieux ?
Faire des différentes zones des zones de textes qui seraient commandées par des TextBox ?
Et comment faire pour que les cases (après première demande ou nombre de demandes et sous Acceptation et refus) soient cochées par une commande sur un formulaire ?

Merci,
Grég
Afficher la suite 

Votre réponse

27 réponses

Meilleure réponse
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 19 juin 2014 à 19:22
1
Merci
Pour ce qui est de ta question...

insérer du texte sur des images
Je ne vois pas dans ton exemple .. de texte Sur des images....

avec le problème des cases qui seraient cochées selon la réponse dans le formulaire..
Vu que tes cases s'excluent l'une /l'autre...ça ne s'appelle pas des cases à cocher mais des boutons radios ( ou option button) qu'ils faut mettre dans des Groupbox
http://www.extendoffice.com/documents/word/1289-word-insert-radio-button.html

De toutes façons.. avant de commencer à coder...il faut déjà que tu puisses savoir le faire "manuellement"...
Ainsi tu pourras mieux appréhender tes besoins et nous expliquer plus clairement sur quoi tu bloques;


Merci jordane45 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 69 internautes ce mois-ci

jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 19 juin 2014 à 23:34
Donc ce que tu nous dit c'est que le tout est une image et que tu veux y ecrire du texte dans les différentes zones ?

Donc comment ouvres tu le fichier pour le traiter ?
Tu le mets dans un document word dans lequel tu auras mis des signets ?
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 juin 2014 à 23:43
En fait, j'imaginais possible d'ancrer cette image (contenant les éléments "interdits" à l'utilisateur + les zones de texte accessibles à l'utilisateur, par le biais des formulaires) dans un document Word.

C'est ce que j'ai fait là : http://cjoint.com/?DFttiW4O7Rx,
où j'ai collé l'image en .png sur une feuille et j'ai ensuite inséré les différentes zones de texte que j'ai nommé ZONE 1, ..., ZONE 7.

J'ai évidemment fait ça grossièrement mais je peux ensuite fignoler les différentes zones de manière à ce qu'elles "collent" le plus au document contraint.

Je me suis totalement égaré ?
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 19 juin 2014 à 23:52
Ca n'a pas l'air mal.
Mais...
Et donc quel est ton souci ?
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 00:04
Et bien mon souci, c'est d'attribuer telle zone à tel contrôle dans un formulaire.
La zone 1 devra être "remplie" à partir de la réponse qu'aura donnée l'utilisateur dans un contrôle bien défini contenu dans un formulaire.
Idem pour la zone 2
La zone 3 est renseignée à partir d'un formulaire où deux contrôles Textbox demandent le nom puis le prénom.
Les autres zones sont des textbox, aux dimensions similaires à celles des zones de texte "collées" au document, qui vont se reporter dans les Zones 4, 5, 6 et 7.

Qu'en dis-tu ?
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 01:21
J'ai par exemple tenté d'attribuer un signet dans une zone de texte et écrit un mot ({zone3}) dans une autre zone.

En même temps, j'ai voulu vérifier que la 'procédure' de recherche -remplacement fonctionnait grâce un témoin ({zone1}, qui n'est pas inclus dans une zone de texte.

L'application fonctionne pour le témoin {zone1}, mais n'atteint ni le signet ni {zone3}, et donc ne remplace pas par les valeurs désirées.

Je renvoie le code, en précisant que le document C:\Users\greg\Desktop\ZonesDeTextes.docx n'est constitué que de 3 zones de textes éparses dans la feuille. L'une est vide, une contient un signet dénommé zone2, et la dernière le mot {zone3}.

Option Strict On
Option Explicit On
Imports Microsoft.office.Interop
Imports Microsoft.Office.Interop.Word

Module Module1
    Dim oWord As New Word.Application

    Sub Main()

        Dim motancien_Zone1 As Object
        Dim motnouveau_Zone1 As Object
        
        Dim motancien_Zone3 As Object
        Dim motnouveau_Zone3 As Object

        motancien_Zone1 = "{zone1}"
        motnouveau_Zone1 = "Pierre"


        motancien_Zone3 = "{zone3}"
        motnouveau_Zone3 = "Jean"

        oWord.Documents.Open("C:\Users\greg\Desktop\ZonesDeTextes.docx")
        oWord.Visible = True

        Remplacer(motancien_Zone1, motnouveau_Zone1)

        oWord.Selection.GoTo(Name:="zone2")
        oWord.Selection.Bookmarks("zone2").Range.Text = "Jacques"

        Remplacer(motancien_Zone3, motnouveau_Zone3)

        Console.ReadLine()

        oWord.ActiveDocument.Close()
        oWord.Visible = False
        oWord.Quit()
    End Sub

    Public Sub Remplacer(ByVal motancien As Object, ByVal motnouveau As Object)

        oWord.ActiveDocument.Content.Find.Execute(FindText:=motancien, ReplaceWith:=motnouveau, Replace:=Word.WdReplace.wdReplaceAll)
    End Sub
End Module


Si cela inspire quelqu'un...j'en serais bien heureux.
Grég
Commenter la réponse de jordane45
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 19 juin 2014 à 19:17
0
Merci
Je sais que je suis très demandeur ces temps-ci
Ca ce n'est pas gênant... nous on aime bien aider...

Par contre.... tu veux faire ça dans QUEL langage ?
VBA.. VB.net.... On ne sait pas vu que tu as encore mis ton message dans la section générique du site.... :-(
Commenter la réponse de jordane45
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 19 juin 2014 à 19:18
0
Merci
Et puis... peux tu reformuler... un peu plus en détail... ce que tu souhaites faire...
Car là...ben je ne comprend rien ...
Commenter la réponse de jordane45
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 19 juin 2014 à 20:34
0
Merci
Ok. Merci Jordane.
En fait, je souhaite programmer cela en VB.net (c'est par ce langage que j'ai commencé à me lancer) si c'était possible.

Je vais tenter d'expliquer davantage mon projet.

Le document présent à l'adresse : http://cjoint.com/?DFttiW4O7Rx

est censé représenter une image (les cadres, le drapeau, des phrases) où sont insérées des zones de texte. L'image est contrainte (je ne peux pas la modifier). En revanche je cherche à avoir la main sur les zones de texte.

Je cherche ainsi à fusionner une image et un texte (plus précisément des zones de texte).

Pourquoi est-ce que je cherche à faire cela ?
Parce que mon projet est de remplir des documents fournis par mon employeur (je ne peux pas toucher à la structure) mais je veux pouvoir remplir les zones de textes à partir de formulaires. Ainsi la zone 1 par exemple sera renseignée à partir d'un Textbox, la zone 2 d'une ComboBox, la dernière par une List...

J'espère être assez clair...
Commenter la réponse de gregml
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 02:21
0
Merci
Ok.. donc tu as mis des textbox directement dans ton document....
Le fait qu'il y ai une image en arrière plan...n'a aucune importance.
Ta question, pour résumé, est : Comment remplir des textbox (dans le document et non dans une Userform) en vb.net...

donc, si tu as bien mis des textbox...
tu peux les manipuler en faisant, par exemple :
 oWord.ActiveDocument.textbox1.text = " ceci est un test"





Commenter la réponse de jordane45
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 08:08
0
Merci
Salut,

Je lis ton message ce matin et me rends compte que là est peut-être le problème.
Ce que j'ai mis sur le document, ce sont des 'Zones de texte' qu'on obtient en faisant dans la barre d'outils de Word: Insertion > Zone de texte... et non des Textbox comme ceux proposés par VB.net sur un formulaire.
A moins qu'il y ait une possibilité de mettre un Textbox sur un document Word ?
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 10:08
Bonjour,

Là tu nous indique :
Ce que j'ai mis sur le document, ce sont des 'Zones de texte' qu'on obtient en faisant dans la barre d'outils de Word: Insertion > Zone de texte... et non des Textbox
Alors qu'avant tu nous as dit :
La zone 3 est renseignée à partir d'un formulaire où deux contrôles Textbox demandent le nom puis le prénom.
Les autres zones sont des textbox,

..... d'où l'importance de la clarté des informations données !!


A moins qu'il y ait une possibilité de mettre un Textbox sur un document Word
Ben oui... sinon...ben je n'en t'aurais pas parlé ^^
Mais pour ça...il faut connaitre le logiciel que tu essaies de "piloter".
Tu trouveras dans l'onglet "développeur" de Word des TextBox, des cases à cocher...etc...


Pour mettre des "zones de text" dans ton document Word il y plein de possibilité... Faire comme tu l'as fais..ou bien utiliser des textbox ou encore des richtextbox...etc....
Après... pour les "manipuler" par programmation.. je te dirais que le mieux c'est de regarder comment faire en VBA.
Après... il reste assez "facile" de transposer le code en VB.net.
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 10:47
Oui, merci de ta réponse. Je suis vraiment navré car effectivement, mon explication n'est pas très claire, parce que j'ai du mal à l'exprimer... et peut-être à la comprendre.
C'est dû au fait que je conceptualise mal la différence entre le formulaire qui va "poser" les questions à l'utilisateur et le document sur lequel vont se trouver les réponses de l'utilisateur ainsi qu'une partie del'insertion de texte.

Pour le reste, je vais m'atteler à la tâche...mais je ne vois pas comment insérer des Textbox ou des RichTextbox dans un document Word...
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 11:11
..mais je ne vois pas comment insérer des Textbox ou des RichTextbox dans un document Word...
Il faut que tu fasses apparaitre l'onglet développeur dans ton WORD.
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 11:24
ok, j'ai bien essayé mais le développeur refuse de positionner une zone de texte au-dessus d'une image.

Ce qui est possible sous Word (hors développeur) ne semble pas l'être sous développeur.

Je t'envoie ce message tout de suite mais vais tenter de le formuler un peu mieux, sous forme de schéma disponible sur cjoint.

Grég
Commenter la réponse de gregml
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 11:29
0
Merci
Tu peux regarder cette page :
http://www.developpez.net/forums/d1324841/logiciels/microsoft-office/word/vba-word/vba-controle-contenu-texte-enrichi/

Donc : tu insères un contrôle de contenu : texte enrichi
Tu vas dans ses propriétés et tu lui affecte une valeur dans la case Balise


Puis tu utilises le code (présent dans le lien que je t'ai donné)
Sub test()
' Code VBA
Dim cc As ContentControl
    Dim docCCs As ContentControls
     Set docCCs = ActiveDocument.SelectContentControlsByTag("toto")
 
    If docCCs.Count <> 0 Then
        For Each cc In docCCs
            cc.Range.Text = " Le nouveau texte que je veux mettre !!!!! "
        Next
    Else
        MsgBox "La zone de texte n'a pas été trouvée !!"
    End If
End Sub



... Que tu transformes en VB.net bien entendu...



Commenter la réponse de jordane45
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 11:41
0
Merci
Le problème,c'est que je n'ai pas ces commandes dans mon développeur. Je t'ai fait une copie d'écran disponible là :http://cjoint.com/?DFulNxv4NDT

A chaque fois qu'il y a une solution de trouvée, un nouveau problème apparaît... c'est un peu décourageant!

Merci infiniment, Greg
Commenter la réponse de gregml
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 11:48
0
Merci
Hop hop hop...
J'ai peut-être trouvé comment rajouter des formulaires.
Je cherche, Greg
Commenter la réponse de gregml
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 11:52
0
Merci
...
Le problème,c'est que je n'ai pas ces commandes dans mon développeur

... tu es sous quelle version d'office ??

Par contre... le contrôle en question semble bien présent dans ta capture d'écran...
ne serait-ce pas le premier ?

A chaque fois qu'il y a une solution de trouvée, un nouveau problème apparaît... c'est un peu décourageant!

Tout n'est pas toujours comme on le souhaites...
Tout n'est pas disponible dès que l'on veut s'en servir...
Il faut parfois (et c'est valable dans beaucoup de choses de la vie) faire des étapes "supplémentaires" ou chercher un moyen pour contourner le souci ..pour arriver à nos fins.





Pour ce qui est de travailler avec les Zones de text (celles que tu as mis en place au début ) il est aussi possible de les manipuler :
-Ces zones de texte sont considérés comme des "Shapes".
- Attention.. plusieurs "text box" peuvent avoir le même nom.. il faut donc travailler avec leurs ID.

'Code VBA 
Sub test()

 'On liste toutes les zones de texte pour récupérer leur ID
For Each shp In ThisDocument.Shapes
    Debug.Print shp.Type
    Debug.Print shp.Name
    Debug.Print shp.ID
Next

'Exemple d'écriture dans la zone de text1
ThisDocument.Shapes(1).TextFrame.TextRange.Text = "nouveau text"

End Sub


A convertir en VB.net.



Commenter la réponse de jordane45
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 12:50
0
Merci
Sorry, c'était un peu con comme commentaire...
Et effectivement, on n'a pas tout, tout cuit. Mais pour éviter tout malentendu, ce n'est pas l'impatience mais plutôt la crainte que mon projet ne soit techniquement pas réalisable qui m'a fait écrire ce commentaire. En espérant ne pas t'avoir blessé, j'en suis encore désolé.

En fait, pour être tout à fait clair:
j'ai la version Microsoft Office 2011 sur mon Mac
j'ai la version Microsoft Office 2010 sur mon PC virtuel (par VirtualBox)

le contrôle en question semble bien présent dans ta capture d'écran...
ne serait-ce pas le premier ?

OK, j'ai réussi (dans le VirtualBox donc le PC) à trouver la fenêtre Propriétés attachée à la zone de Texte. Je vois comment c'est développable et te remercie.

J'essaie de comprendre en même temps ce que sont ces fameuses 'Shapes' parce qu'il me semble que ça correspond assez à ce qui est attendu.
Te remerciant, Grég
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 13:57
OK, heureux de voir que j'ai plutôt mal interprété ton commentaire. Je tente la question des 'Shapes'... mais ça a l'air chaud.
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 14:23
Tests le code directement en VBA dans ton document WORD.
Tu peux... au cas où, le lancer en mode pas à pas... ce qui te permettra de comprendre un peu plus comment il fonctionne...

Ensuite, la retranscription en VB.net n'est pas plus compliqué que ce que tu as codé jusqu'à maintenant;.


        Dim file As Object = "c:\tmp\doctest.docm"
        Dim oWord As New Word.Application

        oWord.Documents.Open(file)
        oWord.Visible = True

        Dim NouveauText As String = "ceci est un super test !!"
        Dim TextBoxID As Integer = 1

        'ecriture dans la première textbox
        oWord.ActiveDocument.Shapes(TextBoxID).TextFrame.TextRange.Text = NouveauText

        'écriture dans la secode:
        TextBoxID = 2
        oWord.ActiveDocument.Shapes(TextBoxID).TextFrame.TextRange.Text = " Texte sans passer par une variable !!"
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 14:26
J'ai une bonne et une mauvaise nouvelle.
Je commence par la bonne :

'Code VBA
Sub test()

 'On liste toutes les zones de texte pour récupérer leur ID
For Each shp In ThisDocument.Shapes
    Debug.Print shp.Type
    Debug.Print shp.Name
    Debug.Print shp.ID
Next

'Exemple d'écriture dans la zone de text1
ThisDocument.Shapes(1).TextFrame.TextRange.Text = "nouveau text"

End Sub


Cette application, convertie en VB.net fonctionne parfaitement.

J'ai disposé 4 zones de texte au hasard sur mon document, il m'a identifié les 4 zones et j'ai pu écrire à l'intérieur.
La mauvaise nouvelle, c'est que mon projet continue...

Merci, Grég
jordane45 22126 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 20 août 2018 Dernière intervention - 20 juin 2014 à 14:31
La mauvaise nouvelle, c'est que mon projet continue...
...ah ben non... c'est une bonne nouvelle aussi.....ça veut dire que tu vas encore avoir besoin de nous... :-p


Cette application, convertie en VB.net fonctionne parfaitement.
Pense à clôre le sujet dans ce cas.
gregml 89 Messages postés samedi 17 mai 2014Date d'inscription 16 juin 2017 Dernière intervention - 20 juin 2014 à 14:32
Pas de problème. Merci
Commenter la réponse de gregml

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.