IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB.net Word champ text et indexes


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut VB.net Word champ text et indexes
    Bonsoir,

    voilà je cherchais comme tant d'autre à modifier un champ texte dans word à l'aide de la fonction range.

    Tout se passe bien mais l'index est écrasé au moment du changement. Or, je ne peux pas me permettre de perdre les index du documents même après modification puisqu'ils sont réutilisés dans une autre appli derrière

    J'ai essayé d'tiliser la fonction select ... mais je n'arrive pas non plus à de bon resultats.

    j'ai vu des codes sur la fonction select qui passent en suite à une autre (selection) que je n'arrive pas non plus à intégrer dans mon code

    voici ce que j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
            Dim oW As Microsoft.Office.Interop.Word.Application
            Dim OwD As Microsoft.Office.Interop.Word.Document
     
            Dim oWr As Microsoft.Office.Interop.Word.Range
     
     
            oW = New Microsoft.Office.Interop.Word.Application
            OwD = oW.Documents.Open("C:\Users\florent\Documents\MANU_DEV\HLMPROSUITS\MODELES\PUB_MODEL1.docx", [ReadOnly]:=False)
            ' Initialisation de la variable
     
            OwD.Bookmarks.Item("texte19").Range.Text = Today
            oWr.range.Text = Today
            'CECI EFFACE L INDEX 
            oWr = OwD.Bookmarks.Item("texte3").Range
            oWr.Text = TextBox40.Text
            oWr = OwD.Bookmarks.Item("texte4").Range
            oWr.Text = Label51.Text
            oWr = OwD.Bookmarks.Item("texte26").Range
            oWr.Text = Label52.Text
            oWr = OwD.Bookmarks.Item("texte6").Range
            oWr.Text = TextBox5.Text & " " & TextBox6.Text
     
            If Label65.Text = "Appartement" Then
                OwD.FormFields("CaseACocher2").CheckBox.Value = True
            ElseIf Label65.Text = "Maison" Then
                OwD.FormFields("CaseACocher1").CheckBox.Value = True
            Else
                oWr = OwD.Bookmarks.Item("texte12").Range
                oWr.Text = Label65.Text
            End If
     
     
     
            oW.Visible = True
    peut on conserver l'index ? si non peut on le recréer juste au moment de sa destruction ?

    merci de votre aide

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,


    Citation Envoyé par manuly Voir le message
    Bonsoir,

    voilà je cherchais comme tant d'autre à modifier un champ texte dans word à l'aide de la fonction range.

    Tout se passe bien mais l'index est écrasé au moment du changement. Or, je ne peux pas me permettre de perdre les index du documents même après modification puisqu'ils sont réutilisés dans une autre appli derrière


    merci de votre aide
    J'avoue que je ne comprends pas bien ta question parce que Range n'est pas une fonction, et que pour VBA et pour Word, les index sont des termes précis utilisés dans des circonstances précises. De plus, si tu veux passer tous les signets de ton document, tu n'as probablement pas besoin d'utiliser un objet Range. Je crois comprendre que tu ne veux pas perdre tes signets (Bookmarks) dans certaines circonstances. Mais, quand un champ est écrasé c'est le comportement normal de Word (du moins à ma connaissance), d'effacer aussi le signet, si le signet correspond au champ. Si ton signet est placé juste à côté de ton champ, tu devrais, du moins je suppose, le conserver.

    Je pense, que si ce que tu appelles index sont des signets, ce serait intéressant que tu le confirmes, et, également, confirmer si tes signets sont directement sur tes champs, ou à côté.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Bonsoir,

    oui en effet je parle de signets. Maintenant mon cas est un peu particulier. Je vais tâcher d'être clair autant que possible:

    à chaque endroit où ce document word doit être modifié il y a un champ texte ( qui n'a pas de nom) mais qui a un signet

    je voudrais modifier la zone texte de cet objet mais je ne sais pas qu'elle est son nom ni dans quelle ligne de code je dois utiliser pour attaquer juste le contenu et non le contenant ou ce qui me permet de les identifier.

    voici un screen de ce dont je parle histoire d'être plus explicite car je sens que j ai du mal à dire ce que je souhaiterais faire :


    après avoir vue cette photo je veux juste inscrire mes données dans la valeur texte par défaut ... c'est tout

    merci pour votre aide.

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Il y a une autre technique qui me semble plus simple que les champs texte :

    On définit le document à modifier ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Date : µdate
    ...
    Téléphone : µtel
    ...
    Il ne reste plus qu'à utiliser la fonction de remplacement sur "µdate" et "µtel".
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    yes vous avez pleinement raison, mais malheureusement ceci est une contrainte pour moi et non un choix. je dois me plier au modèle de document. Ce serait quand même étonnant que ....

    la seule solution possible serait de pouvoir créer l'objet lui donné un bookmark et le remplir mais voila mon problème c'est le remplir. Je ne vois rien de possible dans la propriété formfields .... le plus dingue c'est que dans formfields j'ai la fameuse checkbox .....
    je peux également renommé mon bookmark de mon champ texte ou ahir sur les macros E/S ... mais pas le texte ....

  6. #6
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Je ne voudrais pas abuser mais je fais un petit Up du coup suis en manque d'idées sur le sujet ....

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    J'ai l'impression que tu n'as pas la même version de Word que moi. Avec Word 2010, je ne trouve pas de champ texte. Soit qu'il a été intégré dans les QuickParts, soit qu'il l'ont très bien caché. Je n'ai pas non plus retrouvé ta boîte de dialogue. Donc, je suis très embêté...
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  8. #8
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    j'ai utiliser le bandeau developpeur pour retrouver ce foutu champ texte ^^ après clique droit dessus propriété et tu vois apparaitre cette fenêtre de propriété

    merci en tout cas de t'en soucier

    Version office : 2013

    version VS.NET ultimate 2012

  9. #9
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je viens de trouver deux contrôles de texte dans le ruban développeur. Il n'y a pas de menu contextuel. C'est peut-être une nouveauté d'Office 2013.

    (CM) Excusez pardon. Je viens de trouver. C'est un contrôle de formulaire; et il y a le menu contextuel.

    Je "sent" venir une solution, mais rien de précis encore. Hier soir (chez moi), la nuit dernière chez-vous, j'ai trouvé le moyen de boucler sur les signets et d'en extraire le contenu. Je vais tenter de reprendre tout cela ce soir ou demain.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  10. #10
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    ^^ merci pour cette réflexion je continue à regarder également de mon côté. Le premier qui trouve appelle l'autre !! merci

  11. #11
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    je vais tenter un truc: mettre dans le champ text un valeure et faire un replace si ça marche il me conservera et le bookmark et le champ texte.


    Par contre si quelqu'un à la solution .... je prend

  12. #12
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Effectivement ..... mettre une valeur dans le champ texte reste la solution ... en effet cela ne détruit pas l'objet alors que si j'utilise la méthode .range.texte = "toto" cela detruit et l'index et l'objet

    Merci à tout ceux qui ont planchés sur le sujet. Je marque résolu mais du coup .... ça doit bien exister quand meme cette fonction texte non ?

    en fait grafito tu m'as donné l'idée! juste en disant plutot que d'utiliser les champs textes .... et pourquoi ne pas les remplir justement!!!

  13. #13
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tant qu'à avoir commencé, j'ai réussi à trouver une solution (niaiseuse au boutte) pour ton champ de formulaire original. Cela m'a pris une éternité pour réaliser que le champ de formulaire a son propre signet, lequel porte le même nom que le champ. Quand le champ est modifié, le signet est mis à jour. Donc, la solution est de sauvegarder le nom du signet qui va être effacé et de copier le signet "automatique" en lui donnant le nom sauvegardé.

    J'ai quand même conservé tout ce qui était encore utilisable :

    - Deux tables de données pour conserver les informations sur les signets et les champs. Ces tables, sont mises à jour après chaque changement du texte dans un des champs

    - Deux Listboxes pour afficher les noms de signets et les noms des champs. J'en ai mis sur enabled = false, parce que, pour l'instant, il ne sert à rien.

    -Deux TextBoxes pour afficher les informations sur les signets et sur les champs. Ces Textboxes sont mises à jour à chaque remplacement de texte dans un champ.

    -Un textbox pour indiquer le texte de remplacement pour un champ.

    -Une InputBox pour compenser quand on oublie d'indiquer le texte de remplacement.

    Pour lancer le remplacement, il suffit de sélectionner le nom du champ dans le ListBox.

    J'ajoute le programme, si jamais, cela peut servir à quelqu'un.
    Fichiers attachés Fichiers attachés
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  14. #14
    Membre du Club
    Homme Profil pro
    Chargé de commercialisation
    Inscrit en
    Août 2013
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé de commercialisation
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2013
    Messages : 46
    Points : 52
    Points
    52
    Par défaut
    Bellissimo!!! je vais jeter un oeil à votre code et le dévorer!!! peu importe de la façon dont vous y êtes arrivé .... on est clairement en train de montrer une lacune de VB / excel ici

    car oui tout est prévue mais pas cette fonction évidente. Pour moi c'est un non sens!

    en tout cas merci de l'effort!!! rare sont les gens qui s'impliquent dans la vie des autres pour les aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur sur champ text pour un index Full-Text
    Par Steph82 dans le forum Outils
    Réponses: 5
    Dernier message: 06/01/2011, 14h08
  2. [VB.NET] Ecrire dans un champs texte ecrit en HTML
    Par mael94420 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 12/10/2006, 19h01
  3. [VB.NET] pilotage word : champ de formulaire
    Par Kropernic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 30/07/2006, 12h15
  4. [CR9][VS.NET]Masquer un champ texte
    Par San Soussy dans le forum SDK
    Réponses: 4
    Dernier message: 25/08/2005, 11h46
  5. [VB.NET]Retour chariot dans un champ texte
    Par San Soussy dans le forum ASP.NET
    Réponses: 10
    Dernier message: 23/06/2005, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo