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

WinDev Discussion :

[WD28] Pilotage word & Publipostage


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut [WD28] Pilotage word & Publipostage
    Coucou, je suis novice avec windev, j'essaie d'écrire un petit bout de code qui me permet de piloter word et publier des informations dans des champs de formulaire mais le code bloque à la ligne 17.
    Si je ne me trompe pas cette retranscription s'apparente à du VBA, il me semble que la syntaxe est bonne mais pas moyen de publiposter. Avez vous une idée ?
    Je ne souhaite pas utiliser le champ traitement de texte de windev mais travailler avec word directement. J'ai regarder l'exemple de windev mais ça ne correspond pas à ce que je veux faire.
    et sur google y'a quasiment rien qui s'y apparente.

    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
    sDocument        est une chaîne    = "C:\Mes projets\Publipostage\Publipostage.docx"
    sNomFichierPDF    est une chaîne    = "C:\Mes projets\Publipostage\Publipostage.pdf"
    QUAND EXCEPTION DANS
        word est un objet OLE "Word.Application"
        word>>Visible=Vrai // Word n'apparait pas à l'écran
        // Ouverture du document
        word>>Documents>>Open(sDocument)
        // Ecriture dans Word
        //word>>Selection>>TypeText("Texte écrit par WinDev")
        word>>DisplayAlerts= False
     
        SI word>>ActiveDocument>>ProtectionType = 2
            word>>ActiveDocument>>unprotect("123") 
        FIN
     
        SI word>>ActiveDocument>>Bookmarks>>Exists("Nom") ALORS
            word>>ActiveDocument>>Bookmarks>>Item("Nom")>>Range>>Text = "Toto"
        FIN
     
        SI word>>ActiveDocument>>Bookmarks>>Exists("Prénom") ALORS
            word>>ActiveDocument>>Bookmarks>>Item("Prénom")>>Range>>Text = "Abricot"
        FIN
        word>>ActiveDocument>>Protect(2,Faux,"123") 
        word>>ActiveDocument>>Saveas(sNomFichierPDF,17) // Enregistrement du document modifié
        word>>ActiveDocument>>Close
        word>>Quit // Fermeture de Word
    FAIRE
        word>>Quit
        Info(ExceptionInfo(errComplet))
    FIN

  2. #2
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 740
    Par défaut
    Bonjour,

    Sans plus d'informations, il va être difficile de t'aider.

    Quelle est l'erreur ? Quelle ligne la produit ?
    Bref, tous détails supplémentaires seraient utiles.

    JS

  3. #3
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut
    Nom : erreur.jpg
Affichages : 337
Taille : 93,3 Kovoici le message d'erreur :

  4. #4
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 740
    Par défaut
    Peut-être devrais-tu essayé de décomposer ton code pour voir d'où vient l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        SI word>>ActiveDocument>>Bookmarks>>Exists("Nom") ALORS
            unBookMark est un objet OLE = word>>ActiveDocument>>Bookmarks>>Item("Nom")
            unRange est un objet OLE = unBookMark>>Range
            unRange>>Text = "Toto"
        FIN
    Je n'ai pas essayé, c'est juste une piste
    JS

  5. #5
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut
    ça ne fonctionne pas, le problème est sur la propriété "Text".

  6. #6
    Membre prolifique Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Avril 2011
    Messages
    4 740
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2011
    Messages : 4 740
    Par défaut
    J'ai trouvé ça

    apparemment, changer le texte d'un bookmark, supprime celui-ci
    Il propose une méthode, à voir.

    JS

    Edit : J'ai trouvé ça aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If ActiveDocument.Bookmarks.Exists("texte1") = True Then
    ActiveDocument.Bookmarks("texte1").Range.Select
    Monword.Selection.Text = valeur
    A adapter en WLangage

  7. #7
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut
    Je désespère ça ne fonctionne pas

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2023
    Messages : 106
    Par défaut
    Bonjour,

    Ceci fonctionne, voir si ça correspond bien à vos attentes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BookmarkRang est un objet Automation dynamique
    NouveauTexte est une chaîne = "Toto"
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("Nom") ALORS
    	BookmarkRang = word>>ActiveDocument>>Bookmarks("Nom")>>Range
    	word>>ActiveDocument>>Bookmarks>>Item("Nom")>>Range>>Text = NouveauTexte
    	word>>ActiveDocument>>Bookmarks>>Add(NouveauTexte, BookmarkRang)
    FIN
    Cordialement

  9. #9
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2023
    Messages : 106
    Par défaut
    ou plutôt ceci si vous souhaitez que le bookmark soit créé sur la sélection du nouveau texte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    NouveauTexte est une chaîne = "Toto"
    BookmarkRang est un objet Automation dynamique
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("bkm2") ALORS
    	BookmarkRang = word>>ActiveDocument>>Bookmarks("bkm2")>>Range
    	BookmarkRang>>Text = NouveauTexte
    	BookmarkRang>>End = BookmarkRang>>Start + Taille(NouveauTexte)
    	word>>ActiveDocument>>Bookmarks>>Add(NouveauTexte,BookmarkRang)
    FIN

  10. #10
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 222
    Par défaut
    La documentation sur ces sujets, c'est la documentation de VBA, ici en gros : https://learn.microsoft.com/en-us/of...bookmarks.item
    Pour adapter en Wlangage, en gros, on remplace les Points par >>

    Comme dit Jon Shannow, pour identifier le problème, il faut décomposer.

    Si la ligne word>>ActiveDocument>>Bookmarks>>Item("Nom")>>Range>>Text = "toto" génère une erreur, on ne sait pas trop si c'est le mot Range ou le mot Text qui pose problème.
    Donc on décompose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Bkmark00 , Rnge00 est un objet OLE
    Bkmark00 = word>>ActiveDocument>>Bookmarks>>Item("Nom")
    Rnge00 = Bkmark00>>Range
    Rnge00>>Text = "toto"
    Avec ce nouveau code, ça va probablement planter, puisqu'on n'a rien changé, mais tu sauras quelle étape plante. Et donc tu sauras quelle page de la doc VBA consulter.

    A adapter évidemment sur la base des messages plus récents.

  11. #11
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut
    Bonjour, merci à tous pour vos réponse. J'ai trouvé un moyen de contourner le problème avec ce bout de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("UnSignet") ALORS
        word>>ActiveDocument>>Bookmarks("UnSignet")>>Range>>Select
        word>>Selection>>TypeText("Pomme Banane")
    FIN
    Cependant j'ai un autre problème, dans mon formulaire word j'ai un champ case à cocher, j'ai retranscrit en wlanguage la formule vba pour activer/desactiver cette coche mais celà ne fonctionne pas. Je sais que c'est possible car j'ai déjà vu une appli tourner avec ce fonctionnement. Dans l'éxécution de mon code, aucune erreur n'est à déclarer.

    Voici mon bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("Cocher") ALORS
        SI INT_Cocher..Valeur = 1 ALORS
            word>>ActiveDocument>>FormFields("Cocher")>>Checkbox>>Value(Vrai)
        SINON
            word>>ActiveDocument>>FormFields("Cocher")>>Checkbox>>Value(Faux)
        FIN
    FIN
    Une idée ?

  12. #12
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut
    Citation Envoyé par DevOcc Voir le message
    Bonjour,

    Ceci fonctionne, voir si ça correspond bien à vos attentes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    BookmarkRang est un objet Automation dynamique
    NouveauTexte est une chaîne = "Toto"
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("Nom") ALORS
        BookmarkRang = word>>ActiveDocument>>Bookmarks("Nom")>>Range
        word>>ActiveDocument>>Bookmarks>>Item("Nom")>>Range>>Text = NouveauTexte
        word>>ActiveDocument>>Bookmarks>>Add(NouveauTexte, BookmarkRang)
    FIN
    Cordialement
    ça ne fonctionne pas chez moi (j'ai toujours le message d'erreur sur "Text", je sais pas si j'ai précisé mais j'utilise un champ de formulaire dans word et pas un signet
    pour les signets ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("Prenom") ALORS
        word>>ActiveDocument>>Bookmarks("Prenom")>>Range>>InsertAfter(SAI_Prénom)
    FIN

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2023
    Messages : 106
    Par défaut
    Ok, merci bien pour votre retour.
    Effectivement, je me suis basé sur le code de votre premier Post, ce qui m'a induit en erreur et j'ai zappé le champs de formulaire, donc ma réponse ne correspond pas.
    Votre code fonctionne bien pour un signet (emplacement du curseur) alors que je vous ai transmis le code pour un signet sur sélection d'un texte ("nom") avec remplacement du texte du signet et création d'un nouveau signet sur le nouveau texte.
    Cordialement.

  14. #14
    Membre actif Avatar de leadri
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2005
    Messages : 58
    Par défaut
    Pour publiposter avec un champ de formulaire texte dans word :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SI word>>ActiveDocument>>Bookmarks>>Exists("Test") ALORS
    	word>>ActiveDocument>>FormFields("Test")>>TextInput>>Default = "Fraise Kiwi" 
    FIN

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

Discussions similaires

  1. Probleme avec liaison word en publipostage
    Par deglingo37 dans le forum Access
    Réponses: 2
    Dernier message: 23/05/2006, 16h38
  2. Pilotage word
    Par krfa1 dans le forum Access
    Réponses: 17
    Dernier message: 13/03/2006, 07h05
  3. [.NET] Pilotage Word et licence
    Par aldbaran dans le forum Framework .NET
    Réponses: 3
    Dernier message: 03/01/2006, 15h01
  4. [C#] Pilotage Word
    Par diaboloche dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/12/2005, 21h39
  5. [AUTOMATION WORD]Pilotage Word par Delphi
    Par Sunny dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 05/12/2002, 17h09

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