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 :

Publipostage et insertion du Champ table WD dans Word


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut Publipostage et insertion du Champ table WD dans Word
    Bonjour à tous
    Je fais du publipostage et dans ma fenetre WD j'ai quelque champ de saisie et un champ table.
    Alors, les données des champ de saisie sont sont transmis à word via des signets ici tout marche.

    Mon champ table contient des données que je dois inserer dans le tableau de word et la je suis bloqué
    J'ai parcourus la Doc PCSOFT, les tuto sur YouTube rien de satisfaissant.
    Y a t-il une solution à ce sujet ?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    68
    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 : 68
    Points : 136
    Points
    136
    Par défaut
    Bonjour,
    Avez-vous vu ces liens :

    correspond à votre demande :
    https://doc.pcsoft.fr/?1000022967
    Voir la section : Exemple de création d'un tableau dans un document avec le contenu d'un champ Table

    En relation avec le lien ci-dessus :
    https://blogs.pcsoft.fr/fr/insertion...10898/read.awp
    concerne un champ Table vers Tableau Docx

    Eventuellement, TableVersWord (Fonction)
    https://doc.pcsoft.fr/fr-FR/?3074036


    https://forum.pcsoft.fr/fr-FR/pcsoft...ation/read.awp

    https://www.developpez.net/forums/d2...itement-texte/
    https://www.developpez.net/forums/d2...existant-word/

    Il y a de quoi faire.
    Cdlt

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    J'ai cette erreur
    Erreur à la ligne 50 du traitement Clic sur BTN_SansNom2.
    Indice de ligne incorrect : vous accédez à la ligne 2 alors qu'il y a 1 lignes.
    ----- Informations techniques -----
    Appel WL :
    Traitement de 'Clic sur BTN_SansNom2' (FEN_PUB.BTN_SansNom2), ligne 50, thread 0

    Que s'est-il passé ?
    Indice de ligne incorrect : vous accédez à la ligne 2 alors qu'il y a 1 lignes.

    Code erreur : 1155
    Niveau : erreur fatale

    et voici mon code

    // Insère un tableau à la position du curseur de taille 3 colonnes et 2 lignes
    ExécuteTraitement(BTN_Remplir_tableau,trtClic)

    doc est un Document <- TT_SansNom1..Valeur
    cTableRisque est un Champ <- TABLE_P
    pColRisque est un Champ

    DocInsèreTableau(TT_SansNom1, doc..Signet["TABLEAU1"]..PositionFin, 108, cTableRisque..Occurrence + 1)

    POUR TOUT para DE doc..Paragraphe

    SI para..Tableau <> Null ALORS
    para..Tableau..Colonnes[1]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[2]..LargeurMillimètres = "25"
    para..Tableau..Colonnes[3]..LargeurMillimètres = "50"
    para..Tableau..Colonnes[4]..LargeurMillimètres = "50"

    // Pour toutes les colonnes du champ table ...
    POUR nColonneRisque = 1 _À_ 10 //TableOccurrence(cTable, toColonne)

    // Première ligne du tableau contient le titre des colonnes
    pColRisque <- TableEnumèreColonne(cTableRisque, nColonneRisque)
    para..Tableau..Cellules[1, nColonneRisque]..Contenu..Texte = pColRisque..Libellé
    para..Tableau..Cellules[1, nColonneRisque]..MiseEnPage..Alignement = chCentre
    para..Tableau..Cellules[1, nColonneRisque]..MiseEnPage..CouleurFond = GrisClair

    // Remplissage de toutes les lignes de cette colonne
    POUR nLigne = 1 _À_ cTableRisque..Occurrence
    para..Tableau..Lignes[nLigne]..Hauteur = "5"
    para..Tableau..Cellules[nLigne+1, nColonneRisque]..Contenu..Texte = pColRisque[nLigne]
    para..Tableau..Cellules[nLigne+1, nColonneRisque]..MiseEnPage..Alignement = chCentre
    FIN
    FIN
    SORTIR
    FIN
    FIN

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    J'ai un Btn qui rempit mon champ table ayant 10 colonnes et 7 lignes avec la fonction TableAjouteLigne.
    Alors, l'execution se fait stop avec le message vous tentez d'acceder à la 2eme ligne etc....

    Je suis bloqué

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    LA je viens de supprimer tout le contenu de mon champ table et renseigner avec precission le code

    doc est un Document <- TT_SansNom1..Valeur

    cTableRisque est un Champ <- TABLE_P

    pColRisque est un Champ

    DocInsèreTableau(TT_SansNom1, doc..Signet["TABLEAU1"]..PositionFin, 108, cTableRisque..Occurrence + 1)

    POUR TOUT para DE doc..Paragraphe

    SI para..Tableau <> Null ALORS
    para..Tableau..Colonnes[1]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[2]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[3]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[4]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[5]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[6]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[7]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[8]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[9]..LargeurMillimètres = "15"
    para..Tableau..Colonnes[10]..LargeurMillimètres = "15"

    // Pour toutes les colonnes du champ table ...
    POUR nColonneRisque = 1 _À_ 10 //TableOccurrence(cTable, toColonne)

    // Première ligne du tableau contient le titre des colonnes
    pColRisque <- TableEnumèreColonne(cTableRisque, nColonneRisque)
    para..Tableau..Cellules[1, nColonneRisque]..Contenu..Texte = pColRisque..Libellé
    para..Tableau..Cellules[1, nColonneRisque]..MiseEnPage..Alignement = chCentre
    para..Tableau..Cellules[1, nColonneRisque]..MiseEnPage..CouleurFond = GrisClair

    // Remplissage de toutes les lignes de cette colonne
    POUR nLigne = 1 _À_ cTableRisque..Occurrence
    para..Tableau..Lignes[nLigne]..Hauteur = "7"
    para..Tableau..Cellules[nLigne+1, nColonneRisque]..Contenu..Texte = pColRisque[nLigne]
    para..Tableau..Cellules[nLigne+1, nColonneRisque]..MiseEnPage..Alignement = chCentre
    FIN
    FIN
    SORTIR
    FIN
    FIN

    Maintenant l'erreur est :

    Erreur à la ligne 37 du traitement Clic sur BTN_SansNom2.
    Indice de sous-élément incorrect : vous accédez au sous-élément 6 alors qu'il y a 5 sous-éléments.

    ----- Informations techniques -----

  6. #6
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 839
    Points : 5 341
    Points
    5 341
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    En utilisant les balise de code cela aurait été plus facile à lire.
    Ton problème vient de ton nLigne+1.
    Il faut éventuellement faire un traitement spécial pour la ligne 1 (en tête) et commencer le traitement général à la ligne 2 en utilisant nLigne.

    Par ailleurs, il serait préférable d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Pour toutes les colonnes du champ table ...
    POUR nColonneRisque = 1 _À_TableOccurrence(cTable, toColonne)
    plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Pour toutes les colonnes du champ table ...
    POUR nColonneRisque = 1 _À_ 10 //TableOccurrence(cTable, toColonne)
    Cela permettrait une modification plus facile du nombre de colonne sans avoir à changer le code.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    touours le message rien ne change; il me renvoi toujour la meme erreur que vous tenetez d'acceder la 2eme ligne
    Il y a pas plus simple exemple un Tuto avec meme TableversWord, prendre le champ table et l'inserer dans Word?
    Sa fait 3 jours que j'ai pas dormis ... je suis epuisé

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    68
    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 : 68
    Points : 136
    Points
    136
    Par défaut
    Bonjour,
    Avez-vous essayé de placer un point d'arrêt dans le code et d'analyser le contenu des variables (touche F7 pour progresser dans le déroulement du code)?
    Eventuellement, montrez nous des copies d'écran de votre appli pour comprendre le problème.
    Cdlt

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2023
    Messages
    68
    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 : 68
    Points : 136
    Points
    136
    Par défaut
    j'ai fait un essai, votre code fonctionne.

    1 - Pourquoi 108 sur cette ligne :
    DocInsèreTableau(TT_SansNom1, doc..Signet["TABLEAU1"]..PositionFin, 108, cTableRisque..Occurrence + 1)
    Remplacez par :
    DocInsèreTableau(TT_SansNom1, doc..Signet["TABLEAU1"]..PositionFin, TableOccurrence(cTableRisque, toColonne), cTableRisque..Occurrence + 1)


    2 - Conformément à la remarque de Voroltinquo, remplacez :
    POUR nColonneRisque = 1 _À_ 10 //TableOccurrence(cTable, toColonne)
    par :
    POUR nColonneRisque = 1 _À_ TableOccurrence(cTableRisque, toColonne)

    Si ça ne fonctionne pas, vérifiez la Table, je pars d'une Table 10 lignes, 10 colonnes pour laquelle je n'ai pas modifié les paramètres dans la description.

    La preuve par l'image (Le tableau final dans le champs Traitement de Texte) :
    Nom : Tableau1.PNG
Affichages : 12
Taille : 19,6 Ko

    Cdlt

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    Voici tout mon code alors, qu'est que j'ai nColonneRisque est or de porté.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    sDat est une chaîne = SAI_Date_de_rev
    sEm est une chaîne = SAI_Semaine
    sEta est une chaîne = SAI_Etablit_le
    sXt est une chaîne = SAI_Xt
    //Ajout par signet dans Word
    Mondocument est un Document <- TT_SansNom1..Valeur
    Monfragment est un docFragment
    Monfragment = Mondocument.Signet["D1"]
    Monfragment.Insère(sDat)
    Monfragment = Mondocument.Signet["D2"]
    Monfragment.Insère(sEm)
    Monfragment = Mondocument.Signet["D3"]
    Monfragment.Insère(sEta)
    Monfragment = Mondocument.Signet["D4"]
    Monfragment.Insère(sXt)	
    //Traitement du tableau
    doc est un Document <- TT_SansNom1..Valeur
    cTableRisque est un Champ <- TABLE_P
    pColRisque est un Champ
    //Insertion du tableau
    DocInsèreTableau(TT_SansNom1, doc..Signet["TABLEAU1"]..PositionFin, TableOccurrence(cTableRisque, toColonne),...
    cTableRisque..Occurrence + 1)
    //Les colonnes 
    POUR TOUT para DE doc..Paragraphe
    	SI para..Tableau <> Null ALORS
    		para..Tableau..Colonnes[1]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[2]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[3]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[4]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[5]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[6]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[7]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[8]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[9]..LargeurMillimètres = "15"
    		para..Tableau..Colonnes[10]..LargeurMillimètres = "15"		
    // Pour toutes les colonnes du champ table ...
    POUR nColonneRisque = 1 _À_ 10 TableOccurrence(cTableRisque, toColonne)
    			// Première ligne du tableau contient le titre des colonnes
    			pColRisque <- TableEnumèreColonne(cTableRisque, nColonneRisque)
    			para..Tableau..Cellules[1, nColonneRisque]..Contenu..Texte = pColRisque..Libellé
    			para..Tableau..Cellules[1, nColonneRisque]..MiseEnPage..Alignement = chCentre
    			para..Tableau..Cellules[1, nColonneRisque]..MiseEnPage..CouleurFond = GrisClair
    // Remplissage de toutes les lignes de cette colonne
    POUR nLigne = 1 _À_ cTableRisque..Occurrence
    				para..Tableau..Lignes[nLigne]..Hauteur = "7"
    				para..Tableau..Cellules[nLigne+1, nColonneRisque]..Contenu..Texte = pColRisque[nLigne]
    				para..Tableau..Cellules[nLigne+1, nColonneRisque]..MiseEnPage..Alignement = chCentre
    			FIN
    		FIN
    		SORTIR
    	FIN
    FIN
     
    SI DocSauve(Mondocument, fRepExe() + [fSep] + "Rendu Cpte Hebdo.docx") ALORS
    	Info("Document a été sauvegardé")
    FIN
     
    SI*ErreurDétectée*ALORS
    	Erreur(ChaîneConstruit("Le fichier %1 n'a pas pu être enregistré.",*Mondocument),*ErreurInfo())
    	RETOUR
    FIN
    Info("OPERATION EFFECTUEE"+RC+"MERCI.....")
    Ferme()
    Comment chez tout marche bien et chez moi lorsque je fais les test sa m'insert juste le tableau lignes et colonnes
    en dessous le code bug?

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2017
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Gabon

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2017
    Messages : 7
    Points : 0
    Points
    0
    Par défaut
    j'ai parcourus ligne par ligne et j'ai corrigé selon votre observation
    POUR nColonneRisque = 1 _À_ TableOccurrence(cTableRisque, toColonne)
    Aussitot nColonneRisque est or de porter

    Nom : Capture.PNG
Affichages : 1
Taille : 22,9 Ko

Discussions similaires

  1. [10g] Insertion d'une table temporaire dans 2 tables
    Par Zidmann dans le forum SQL
    Réponses: 25
    Dernier message: 05/07/2013, 16h12
  2. [WD-2007] Publipostage et insertion de champ
    Par vivi26200 dans le forum Word
    Réponses: 4
    Dernier message: 21/06/2011, 23h34
  3. Insertion de champ de formule dans le détail du rapport
    Par truongmcc dans le forum Débuter
    Réponses: 0
    Dernier message: 03/03/2011, 20h19
  4. Insertion d'une table Access dans Excel
    Par acaly dans le forum IHM
    Réponses: 1
    Dernier message: 26/11/2009, 19h23
  5. Réponses: 1
    Dernier message: 16/04/2009, 00h11

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