PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Présentation
  • Manipuler le champ Traitement de texte par programmation
  • Ouverture et création d'un document docx dans un champ Traitement de texte
  • Enregistrement d'un document docx
  • Effectuer une recherche dans un document et une modification sur le résultat de la recherche
  • Manipuler la sélection
  • Ajouter du texte dans un document
  • Ajouter un saut de page dans un document
  • Gestion des signets
  • Enchaîner des états et des documents de type Traitement de texte
  • Propriétés associées au champ Traitement de Texte
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
Un champ Traitement de texte peut être manipulé par programmation.
Le WLangage propose pour manipuler le champ Traitement de texte :
  • un ensemble de fonctions qui permettent de réaliser toutes les opérations courantes (programmation directe, à l'aide des fonctions WLangage de type DocXXX. Ces fonctions Pour plus de détails, consultez Fonctions de gestion du champ Traitement de texte.
  • une programmation avancée à l'aide des différents types avancés du WLangage permettant de manipuler directement le contenu du fichier docx affiché par le champ Traitement de texte. Pour plus de détails, consultez Types associés au champ Traitement de texte.
Cette page d'aide détaille comment manipuler un champ Traitement de texte par programmation.
Attention : Cette documentation présente les dernières fonctionnalités du champ Traitement de texte. Assurez-vous d'être à jour de tous les modules nécessaires.
Manipuler le champ Traitement de texte par programmation

Ouverture et création d'un document docx dans un champ Traitement de texte

Pour ouvrir un document docx existant par programmation dans un champ Traitement de texte, il est possible de :
  • affecter le champ Traitement de texte directement avec le fichier docx. Par exemple :
    // Sélectionne un fichier .docx dans le répertoire en cours
    sNomFichier est une chaîne
    sNomFichier = fSélecteur("", "présentation.docx", ...
    "Sélection de fichier DocX", ...
    "Fichier Docx (*.docx)" + TAB + "*.docx", "*.docx", fselOuvre)

    SI sNomFichier ~= "" ALORS
    // Aucun fichier sélectionné
    RETOUR
    FIN

    // Chargement du fichier docx
    TT_MonDocument = sNomFichier
  • utiliser la fonction WLangage DocOuvre. Par exemple :
    TT_MonDocument = DocOuvre("C:\Users\test\Documents\fichier.docx")

    SI ErreurDétectée() ALORS
    Erreur(ErreurInfo())
    RETOUR
  • utiliser une variable de type Document et l'affecter au champ Traitement de texte. Par exemple :
    MonDocument est un Document
    MonDocument = "C:\temp\presentation.docx"
    TT_MonDocument = MonDocument

    ou bien :
    MonDocument est un Document
    MonDocument = DocOuvre("C:\Users\test\Documents\fichier.docx")
    SI ErreurDétectée() ALORS
    Erreur(ErreurInfo())
    SINON
    TT_MonDocument = MonDocument
    FIN
Attention : seuls les fichiers au format docx peuvent être manipulés par le champ Traitement de texte.
Astuce : Pour afficher un document vide dans un champ Traitement de texte, il suffit d'affecter le champ Traitement de texte avec une chaîne vide.
Exemple :
// Création d'un document vierge
TT_MonDocument = ""

Enregistrement d'un document docx

Pour enregistrer un document docx, il suffit d'utiliser la fonction DocSauve.
Exemple :
// On choisit le répertoire et le nom de sauvegarde
sNomFichier est une chaîne = fSélecteur(ComplèteRep(fRepExe()), "présentation.docx", ...
"Sélection de fichiers DocX","Fichier Docx (*.docx)" + TAB + "*.docx" , "*.docx", fselCrée)

// On sauvegarde le fichier
DocSauve(TT_SansNom1, sNomFichier)

SI ErreurDétectée ALORS
Erreur(ChaîneConstruit("Le fichier %1 n'a pas pu être enregistré.", sNomFichier), ErreurInfo())
RETOUR
FIN
Remarques :
  • Le contenu du champ Traitement de texte peut également être :
  • La fonction DocVersTexte permet de récupérer le texte du document.
  • La fonction DocVersImage permet de convertir une page du document en une image.
    Cette fonction est disponible uniquement à partir de la version 220052s (module de mise à jour du champ Traitement de Texte applicable sur WINDEV Update 1).

Effectuer une recherche dans un document et une modification sur le résultat de la recherche

Pour effectuer une recherche dans un document Traitement de texte, il suffit d'utiliser la fonction DocRecherche.
Exemple :
// Recherche du mot "BEAUGRAND" dans le texte
// Sélectionne uniquement le premier trouvé pour changer sa couleur
tabFragments est tableau de docFragments = DocRecherche(TT_SansNom1, "BEAUGRAND")

SI tabFragments..Occurrence >= 1 ALORS
// Positionnement du curseur au début du premier mot trouvé
TT_SansNom1..Curseur = tabFragments[1]..PositionDébut
// Calcul de la longueur de la sélection
TT_SansNom1..LongueurSélection = abFragments[1]..PositionFin - abFragments[1]..PositionDébut+1
// Modification de la couleur du texte
abFragments[1]..Style..CouleurTexte = RougePastel
SORTIR
FIN
// Recherche du mot "BEAUGRAND" dans le texte
// Sélectionne uniquement le premier trouvé pour changer sa couleur
tabFragments est tableau de docFragments = DocRecherche(TT_SansNom1, "BEAUGRAND")

SI tabFragments..Occurrence >= 1 ALORS
// Positionnement du curseur au début du premier mot trouvé
TT_SansNom1..Curseur = tabFragments[1]..PositionDébut
// Calcul de la longueur de la sélection
TT_SansNom1..LongueurSélection = tabFragments[1]..PositionFin - tabFragments[1]..PositionDébut+1
// Modification de la couleur du texte
tabFragments[1]..MiseEnForme..CouleurTexte = RougePastel
SORTIR
FIN
Dans ce code, la variable docFragment correspond à la portion de texte contenant le mot recherché, avec sa position dans le texte complet. Il est ensuite possible de manipuler le fragment trouvé.

Manipuler la sélection

Pour manipuler la sélection actuellement réalisée dans un champ Traitement de texte, il est possible de récupérer cette sélection dans une variable de type docFragment.
Le code suivant permet par exemple de changer la couleur du texte sélectionné.
Exemple :
// Changement de la couleur de la sélection
// Récupération de la sélection actuelle
MaSélection est un docFragment(TT_MonDocument, TT_MonDocument..Curseur, ...
TT_MonDocument..LongueurSélection)
// Changement de la couleur
MaSélection..Style..CouleurTexte = RougePastel
// Changement de la couleur de la sélection
// Récupération de la sélection actuelle
MaSélection est un docFragment(TT_MonDocument, TT_MonDocument..Curseur, ...
TT_MonDocument..LongueurSélection)
// Changement de la couleur
MaSélection..MiseEnForme..CouleurTexte = RougePastel
Le type de variable docFragment possède un constructeur spécifique permettant de récupérer facilement la sélection.

Ajouter du texte dans un document

Pour ajouter du texte dans un document existant, il existe plusieurs méthodes :
  • Insérer un fragment à la position désirée. Exemple :
    // Insère un texte à la fin du document
    frag2 est un docFragment(TT_MonDoc, (Taille(DocVersTexte(TT_MonDoc) + 1)), 0)
    frag..Texte += "Texte de fin"
  • Insérer directement un texte à partir d'une position donnée avec la fonction DocInsère.
    DocInsère(TT_Document, TT_Document..Curseur, "Mon texte inséré")
    Cette fonctionnalité est disponible uniquement à partir de la version 220052s (module de mise à jour du champ Traitement de Texte applicable sur WINDEV Update 1).
Pour ajouter du texte dans un document vide, il est possible de :
  • utiliser l'affectation directe du champ :
    <Champ Traitement de texte> = "Texte à insérer"
    Exemple :
    TT_Mondocument = "Je suis la première phrase de ce document."
  • insérer un fragment à la première position. Exemple :
    // sTexteOriginal contient le texte à insérer
    frag est un docFragment(TT_MonDoc, TT_MonDoc..Curseur, 0)
    frag..Texte += sTexteOriginal
  • insérer directement un texte à partir de la position 1 avec la fonction DocInsère.
    DocInsère(TT_Document, 1, "Mon texte inséré")
    Cette fonctionnalité est disponible uniquement à partir de la version 220052s (module de mise à jour du champ Traitement de Texte applicable sur WINDEV Update 1).
Pour ajouter du texte dans un document existant, il existe plusieurs méthodes :
  • Insérer un fragment à la position désirée. Exemple :
    // Insère un texte à la fin du document
    frag2 est un docFragment(TT_MonDoc, -1 , 0)
    frag..Texte += "Texte de fin"
  • Insérer directement un texte à partir d'une position donnée avec la fonction DocInsère.
    DocInsère(TT_Document, TT_Document..Curseur, "Mon texte inséré")
    Cette fonctionnalité est disponible uniquement à partir de la version 220052s (module de mise à jour du champ Traitement de Texte applicable sur WINDEV Update 1).
  • Ajouter un texte à la fin du document avec la fonction DocAjoute.
Pour ajouter du texte dans un document vide, il est possible de :
  • utiliser l'affectation directe du champ :
    <Champ Traitement de texte> = "Texte à insérer"
    Exemple :
    TT_Mondocument = "Je suis la première phrase de ce document."
  • ajouter le texte avec la fonction DocAjoute.
  • insérer un fragment à la première position. Exemple :
    // sTexteOriginal contient le texte à insérer
    frag est un docFragment(TT_MonDoc, TT_MonDoc..Curseur, 0)
    frag..Texte += sTexteOriginal
  • insérer directement un texte à partir de la position 1 avec la fonction DocInsère.
    DocInsère(TT_Document, 1, "Mon texte inséré")
    Cette fonctionnalité est disponible uniquement à partir de la version 220052s (module de mise à jour du champ Traitement de Texte applicable sur WINDEV Update 1).

Ajouter un saut de page dans un document

Pour ajouter par programmation un saut de page dans un document, il suffit d'utiliser le code suivant :
// Ajoute un saut de page
DocAjoute(TT_SansNom1, Caract(12))
Versions 23 et supérieures

Gestion des signets

Il est possible de gérer les signets dans un document de type Traitement de texte. Quelques exemples :
  • Ajouter un signet : Ajoute un signet ayant pour nom MonSignet avec le texte sélectionné.
    doc est un Document
    doc <- TT_MonDocument
    fragSélection est un docFragment = TT_MonDocument..Sélection..Fragment
    doc..Signet["MonSignet"] = fragSélection
  • Supprimer un signet : Supprime le signet qui porte le nom Signet1 :
    doc est un Document
    doc <- TT_MonDocument
    Supprime(doc.Signet, "Signet1")
  • Lister les signets : Liste les signets d'un document :
    doc est un Document
    doc <- TT_MonDocument
    POUR TOUT uUnSignet,NomSignet de doc..Signet
    Trace(NomSignet) // Nom du signet
    Trace(uUnSignet..Texte) // Texte du signet
    FIN
  • Insérer un texte à la fin d'un signet :
    doc est un Document <- TT_MonDocument..Valeur
    // Recherche de la position du signet
    fragmentSignet est un docFragment = doc..Signet["Signet 1"]
    SI fragmentSignet <> Null ALORS
    // Insertion du texte à la fin du signet
    soit nPositionInsertion = fragmentSignet..PositionFin
    // Insertion à proprement dite
    DocInsère(TT_MonDocument, nPositionInsertion, "Texte à insérer à la position du signet")
    SINON
    Erreur("Signet 'Signet 1' non trouvé dans le document")
    FIN
Nouveauté 23

Gestion des signets

Il est possible de gérer les signets dans un document de type Traitement de texte. Quelques exemples :
  • Ajouter un signet : Ajoute un signet ayant pour nom MonSignet avec le texte sélectionné.
    doc est un Document
    doc <- TT_MonDocument
    fragSélection est un docFragment = TT_MonDocument..Sélection..Fragment
    doc..Signet["MonSignet"] = fragSélection
  • Supprimer un signet : Supprime le signet qui porte le nom Signet1 :
    doc est un Document
    doc <- TT_MonDocument
    Supprime(doc.Signet, "Signet1")
  • Lister les signets : Liste les signets d'un document :
    doc est un Document
    doc <- TT_MonDocument
    POUR TOUT uUnSignet,NomSignet de doc..Signet
    Trace(NomSignet) // Nom du signet
    Trace(uUnSignet..Texte) // Texte du signet
    FIN
  • Insérer un texte à la fin d'un signet :
    doc est un Document <- TT_MonDocument..Valeur
    // Recherche de la position du signet
    fragmentSignet est un docFragment = doc..Signet["Signet 1"]
    SI fragmentSignet <> Null ALORS
    // Insertion du texte à la fin du signet
    soit nPositionInsertion = fragmentSignet..PositionFin
    // Insertion à proprement dite
    DocInsère(TT_MonDocument, nPositionInsertion, "Texte à insérer à la position du signet")
    SINON
    Erreur("Signet 'Signet 1' non trouvé dans le document")
    FIN

Gestion des signets

Il est possible de gérer les signets dans un document de type Traitement de texte. Quelques exemples :
  • Ajouter un signet : Ajoute un signet ayant pour nom MonSignet avec le texte sélectionné.
    doc est un Document
    doc <- TT_MonDocument
    fragSélection est un docFragment = TT_MonDocument..Sélection..Fragment
    doc..Signet["MonSignet"] = fragSélection
  • Supprimer un signet : Supprime le signet qui porte le nom Signet1 :
    doc est un Document
    doc <- TT_MonDocument
    Supprime(doc.Signet, "Signet1")
  • Lister les signets : Liste les signets d'un document :
    doc est un Document
    doc <- TT_MonDocument
    POUR TOUT uUnSignet,NomSignet de doc..Signet
    Trace(NomSignet) // Nom du signet
    Trace(uUnSignet..Texte) // Texte du signet
    FIN
  • Insérer un texte à la fin d'un signet :
    doc est un Document <- TT_MonDocument..Valeur
    // Recherche de la position du signet
    fragmentSignet est un docFragment = doc..Signet["Signet 1"]
    SI fragmentSignet <> Null ALORS
    // Insertion du texte à la fin du signet
    soit nPositionInsertion = fragmentSignet..PositionFin
    // Insertion à proprement dite
    DocInsère(TT_MonDocument, nPositionInsertion, "Texte à insérer à la position du signet")
    SINON
    Erreur("Signet 'Signet 1' non trouvé dans le document")
    FIN

Enchaîner des états et des documents de type Traitement de texte

De la même manière qu'il est possible d'enchaîner des états, il est également possible d'enchaîner des états et des documents de type Traitement de texte.
Pour cela, il suffit d'utiliser la fonction iEnchaînementAjouteDoc en plus des fonctions classiques de création des enchaînements d'états. Par exemple :
MonDocument est un Document = "c:\temp\conditiongenerales.docx"

iAperçu()
// Ajout des états dans l'enchaînement
iEnchaînementAjoute(ETAT_Etat1)
iEnchaînementAjoute(ETAT_Etat2, 3)
// Ajout des conditions générales sous forme d'un document
iEnchaînementAjouteDoc(MonDocument)
iEnchaînementImprime()
Pour plus de détails, consultez Enchaîner des états.

Propriétés associées au champ Traitement de Texte

Les propriétés suivantes sont spécifiques au champ Traitement de texte. Elles permettent essentiellement de manipuler les caractéristiques du champ :
Versions 22 et supérieures
AffichageCaractèresContrôle
AffichageCaractèresContrôle
La propriété ..AffichageCaractèresContrôle permet de :
  • Savoir si l'affichage des caractères de contrôles est activé dans un champ Traitement de texte.
  • Activer ou désactiver l'affichage des caractères de contrôle dans un champ Traitement de texte.
Versions 20 et supérieures
BarreOutilsVisible
Nouveauté 20
BarreOutilsVisible
BarreOutilsVisible
La propriété ..BarreOutilsVisible permet de :
  • Savoir si le ruban du champ est affiché.
  • Afficher ou non un ruban pour le champ.
Versions 23 et supérieures
CheminFichier
Nouveauté 23
CheminFichier
CheminFichier
La propriété ..CheminFichier permet de connaître :
  • le nom du fichier xlsx associé à un champ Tableur. Ce nom est initialisé par les fonctions TableurCharge et TableurSauve.
  • le nom du fichier associé à un champ Editeur d'images. Ce nom est initialisé par les fonctions PicOuvre et PicSauve.
  • le nom du fichier PDF associée à un champ Lecteur PDF. Ce nom est initialisé par la fonction LecteurPDFOuvre.
  • le nom du fichier DOCX associé à un champ Traitement de texte. Ce nom est initialisé par les fonctions DocOuvre et DocSauve.
Versions 23 et supérieures
EditionHTML
Nouveauté 23
EditionHTML
EditionHTML
La propriété ..EditionHTML permet de :
  • savoir si un champ Traitement de texte est affiché en mode optimisé pour l'édition HTML,
  • modifier un champ Traitement de texte pour l'afficher ou non en mode optimisé pour l'édition HTML.
Versions 22 et supérieures
LongueurSélection
Nouveauté 22
LongueurSélection
LongueurSélection
La propriété ..LongueurSélection permet de connaître et de modifier la longueur de la sélection effectuée dans un champ Traitement de texte.
Versions 23 et supérieures
ModeAffichage
Nouveauté 23
ModeAffichage
ModeAffichage
La propriété ..ModeAffichage permet de connaître et de modifier le mode d’affichage d'un champ Traitement de texte ou d'un champ Lecteur PDF.
Versions 09 et supérieures
NombrePage
Nouveauté 09
NombrePage
NombrePage
La propriété ..NombrePage permet de connaître :
  • le nombre de pages présentes dans un fichier image de type "multi-pages". Cette image est affichée soit dans un champ Image, soit dans le fond d'un champ Graphe.
  • le nombre de pages présentes dans un fichier PDF affiché dans un champ Image.
  • Versions 23 et supérieures
    WINDEV le nombre de pages présentes dans un fichier PDF affiché dans un champ Lecteur PDF.
    Nouveauté 23
    WINDEV le nombre de pages présentes dans un fichier PDF affiché dans un champ Lecteur PDF.
    WINDEV le nombre de pages présentes dans un fichier PDF affiché dans un champ Lecteur PDF.
  • Versions 23 et supérieures
    WINDEV le nombre de pages présentes dans un fichier DOCX affiché dans un champ Traitement de texte.
    Nouveauté 23
    WINDEV le nombre de pages présentes dans un fichier DOCX affiché dans un champ Traitement de texte.
    WINDEV le nombre de pages présentes dans un fichier DOCX affiché dans un champ Traitement de texte.
Versions 23 et supérieures
NombrePageAccessible
NombrePageAccessible
La propriété ..NombrePageAccessible permet de connaître le nombre de pages actuellement chargées dans le champ Lecteur PDF ou dans le champ Traitement de texte.
Versions 23 et supérieures
NuméroPageAffichée
NuméroPageAffichée
La propriété ..NuméroPageAffichée permet de connaître et de modifier le numéro de la page actuellement affichée dans le champ Lecteur PDF ou dans le champ Traitement de texte.
Versions 22 et supérieures
RègleVisible
Nouveauté 22
RègleVisible
RègleVisible
La propriété ..RègleVisible permet de :
  • Savoir si les règles sont visibles ou invisibles dans un champ Traitement de texte.
  • Rendre les règles visibles ou invisibles dans un champ Traitement de texte.
Versions 22 et supérieures
Sélection
Nouveauté 22
Sélection
Sélection
La propriété ..Sélection permet d'obtenir les caractéristiques de la sélection (ou du curseur) :
  • dans le champ Traitement de texte.
    Remarque : Cette sélection est située dans la partie en cours d’édition dans le champ (corps, entête ou pied de page).
  • dans le champ Tableur.
Pour connaître la liste complète des propriétés du WLangage pouvant être utilisées avec un champ de type Traitement de texte, consultez Propriétés associées au champ Traitement de texte.
Liste des exemples associés :
Le champ Traitement de texte Exemples unitaires (WINDEV) : Le champ Traitement de texte
[ + ] Cet exemple vous montre comment manipuler un champ traitement de texte  par programmation. Il est possible d'ajouter du texte et de le mettre en forme par programmation.
Version minimum requise
  • Version 22
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire