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

Word Discussion :

champs texte et case à cocher [WD-2007]


Sujet :

Word

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut champs texte et case à cocher
    bonjour,
    c'est mon premier post sur word.
    j'ai un classeur excel avec des données dans des cellules bien identifiées.
    j'ai créé un formulaire, je ne sais pas si c'est le terme exact, avec 7 champs texte.

    Le formulaire sert à créer des attributions d'exposés à faire.
    Suivant les mois il me faut 24 ou 30 formulaires à imprimer.
    J'ai bien réussi à faire le transfert d'excel vers word vers un formulaire sans problème, ensuite j'ai fait un copier/coller du formulaire, j'ai modifié les 7 signets.

    mais modifier 200 signets, avec les risques d'erreurs, c'est un peu galère.

    comment faire pour automatiser le changement de nom du signet de chaque champ (ci-dessous les noms des signets) :

    sachant que je mets 2 formulaires par page, voici la syntaxe du signet
    S1=1ère semaine
    eleve=nom de l'élève
    P=salle principale

    ce qui change c'est S2 en S3, S4 et S5, pour les semaines
    et pour chaque semaine le P en 2, pour salle n°2
    extrait de la macro excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '-----------------------------------
    'traitement 1ère semaine 1ère école
    '-----------------------------------
    WordDoc.Bookmarks("S1eleveP").Range.Text = Cells(22, 6)
    WordDoc.Bookmarks("S1exposeP").Range.Text = Cells(22, 1)
    WordDoc.Bookmarks("S1dateP").Range.Text = Cells(18, 2)
    WordDoc.Bookmarks("S1sourceP").Range.Text = Cells(22, 17)
    WordDoc.Bookmarks("S1themeP").Range.Text = Cells(22, 2)
    WordDoc.Bookmarks("S1cadreP").Range.Text = Cells(22, 8)
    WordDoc.Bookmarks("S1pointP").Range.Text = Cells(22, 7)
    merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Ce que tu souhaites faire n'est pas simple.

    Si un signet existe, on peut lui donner un nom.

    Pourrais-tu nous dire de quoi tu pars et ce que tu souhaites obtenir ?

    Avec l'explication que tu nous donnes pour l'instant, un simple publipostage devrait faire l'affaire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    Bonsoir Heureux-oli,

    je pars d'un tableau Excel, qui contient des données et je veux, dans Word remplir des convocations.

    ci-joint les fichiers
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Le fichier Excel ne contient rien ou presque rien.

    Si ce sont des convocations que tu souhaites faire, je pense que le publipostage est la solution.

    On définit un document de base avec des champs de publipostage.
    Et Word crée autant de documents qu'il n'y a d'enregistrements.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    merci pour ta réponse,
    je vais regarder du côté du publipostage, mais je n'en ai jamais fait.
    bonne nuit et peut-être à bientôt pour un publipostage dans un autre post

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    bonjour,
    merci pour ton lien.

    j'ai appris beaucoup de choses, mais je pense que pour mon cas, c'est pas l'idéal, sauf si je peux créer une étiquette en incluant les données d'excel ainsi que du texte. Ainsi je peux positionner plusieurs étiquettes par page. sinon en utilisant le publipostage pur, il me faut 30 pages, alors que je peux caser 3 convocations par page, c'est une petite économie de papier je le concède, mais sur une année c'est 240 pages d'économisées.
    par contre j'ai également trouvé ce lien:


    qui me convient mieux, j'ai ainsi pu commencer un bout de code :
    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
    Sub Macro5()
    '
    ' Macro5 Macro
    '
    '
    'S1eleveP
    'S1eleve2
     
    Selection.WholeStory
       LaDerniere = Selection.Bookmarks.Count
        MsgBox LaDerniere
     
     For i = 1 To LaDerniere
     MsgBox Selection.FormFields(i).Name
     Selection.FormFields(i).Name = "B" & i
     MsgBox Selection.FormFields(i).Name
    Next i
     
    End Sub
    c'est juste pour débuter, je n'ai pas fait de déclaration variable, je n'ai pas encore trouvé la boucle qui va bien pour modifier mais l'idée est là.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15

  9. #9
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par f69815 Voir le message
    bonjour,
    merci pour ton lien.

    j'ai appris beaucoup de choses, mais je pense que pour mon cas, c'est pas l'idéal, sauf si je peux créer une étiquette en incluant les données d'excel ainsi que du texte. Ainsi je peux positionner plusieurs étiquettes par page. sinon en utilisant le publipostage pur, il me faut 30 pages, alors que je peux caser 3 convocations par page, c'est une petite économie de papier je le concède, mais sur une année c'est 240 pages d'économisées.
    On peut utiliser l'option étiquette pour le publipostage.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    bonsoir,
    j'ai essayé d'utiliser une étiquette personnalisée avec les dimensions voulues, mais je n'arrive pas à la valider.
    de plus je bloque sur le nombre de bookmark, il m'en compte 16, alors qu'il y en a 330. je ne comprends pas!!

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    bonsoir Heureux-oli,

    j'ai fait mes formulaires, renommer tous les signets (330), protégé le document et enregistré en tant que modèle.

    je lance la macro excel qui doit alimenter Word, mais aléatoirement j'ai ce message : le membre de la collection requis n'existe pas.

    j'ouvre mon modèle regarde le signet incriminé et le Name à disparu, ou il est intervertit avec un autre signet.

    donc grande question "pourquoi ?

    D'autre part, j'ai récupéré, ce bout de code pour lister tout les champs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim myFF As FormField
    For Each myFF In ActiveDocument.FormFields
     
    Debug.Print myFF.Name
    Next myFF
    mais j'ai l'impression qu'il ne peut lister la totalité des 330 champs, mais que 200 à la fois, peux-tu me le confirmer, car je n'ai rien trouvé sur le net.

    j'ai également récupéré ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveDocument.FormFields(1).Name = "FF1"
    Debug.Printe ActiveDocument.FormFields(1).Name
    mais il me retourne une erreur :
    la méthode Name de l'objet FormField à échoué.


    en résumé je suis un peu perdu.

    merci pour ton aide

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Il n'y a pas de limite.

    Deux codes pour t'en convaincre :

    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
    Sub ajouterFF()
    Dim intI As Integer
     
    For intI = 1 To 350
    Selection.FormFields.Add Range:=Selection.Range, Type:=wdFieldFormTextInput
    Selection.Collapse direction:=wdCollapseEnd
    Selection.TypeParagraph
    Selection.Collapse direction:=wdCollapseEnd
     
     
    Next intI
    End Sub
     
    Sub ListeFF()
    Dim myFF As FormField
     
    For Each myFF In ActiveDocument.FormFields
    Debug.Print myFF.Name
    Next myFF
     
    End Sub
    Utilise-les successivement dans un nouveau document.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    re, et merci de ta réponse

    effectivement pour l'ajout pas de problème, mais quand tu exécutes le second code, dans l'affichage de la fenêtre exécution, la liste ne commence qu'à Texte152 jusqu'à Texte350.

    j'ai également fait un test en bouclant l'ajout jusqu'à 400 et dans la fenêtre exécution cela commence à Texte202.

    faut-il que je réinstalle office ?

    bon cela ne résout pas mon problème d'effacement et de permutation de champs, à moins que la réinstalle arrange tout.

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    C'est la limite des lignes affichables dans la fenêtre d'éxécution.

    Donc, les 350 sont bien listés.
    Si tu fais une exécution pas à pas, tu les auras sous les yeux, mais c'est pas vraiment le but.

    Pour injecter des données dans un FormField , on peut utiliser .Result, on n'efface pas le champ.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    re,
    merci de ta réponse.
    pour l'utilisation de Result, comment tu fais pour l'intégrer dans excel, voici ma ligne qui alimente le FormField:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDoc.Bookmarks("S11exposeP").Range.Text = Cells(6, 1)
    pour mémo ce n'est pas la valeur du Formfield qui est modifiée, mais bien son nom ("S11exposeP").

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Salut,

    Pour alimenter un FormField, il est préférable d'éviter de passer par un signet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.FormFields("Text350").Result = Cells(1,1)
    Si c'est pas ce que tu souhaites, j'ai toujours pas compris ce que tu veux avoir.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    bonjour,
    me revoilà car je bloque complètement.
    je joins le fichier Word et le fichier excel qui devrait alimenter Word.

    ce que je veux c'est remplir les champs de Word avec les infos contenues dans la feuille "ecole" d'excel.

    dans le fichier excel il y a la macro qui est sensée le faire.

    si tu peux m'aider, merci.
    Fichiers attachés Fichiers attachés

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    bonjour,
    enfin j'ai trouvé une solution, peut-être pas dans les règles de l'art, mais elle fonctionne.

    à partir d'excel je fais un export en txt de mes données.
    dans Word j'ouvre le fichier txt et avec une boucle j'alimente mes champs.

    la structure de mon fichier Word permet de le faire ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub OuvreFichier()
    Dim iNom As String
    Options.Overtype = True
    Close #1
         Open "H:\\testligne.txt" For Input As #1
            For i = 1 To 330
                Input #1, iNom
                ActiveDocument.FormFields(i).Result = iNom
            Next i
    Options.Overtype = False
     
    Close #1
     
    End Sub
    mais maintenant je rencontre un autre problème :
    lors de la mise à jour des champs et suivant la longueur de la donnée, j'ai un décalage de mes autres données, alors que j'ai mis :

  19. #19
    Futur Membre du Club
    Inscrit en
    Novembre 2011
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    bonjour,
    c'est un simple publipostage avec étiquette personnalisée
    j'ai réussi à ouvrir ton fichier word mais ta base de données excel
    c'est rapide à faire
    il ne faut pas oublier dans l'avant derniere étape du publipostage de mettre à jour les champs de fusion et ensuite de terminer et fusionner

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27
    Points : 15
    Points
    15
    Par défaut
    bonsoir tetardapatte,
    merci de ta réponse.

    j'ai essayé le publipostage, mais cela ne convient pas, car cela me fait 30 feuilles de papier, une par personne, alors que je peux mettre 3 convocations par feuilles donc 10 feuilles.
    et j'ai également le même problème les champs se remplissent en "insertion" et non en "refrappe".

    je n'ai pas compris ce que tu veux dire:
    j'ai réussi à ouvrir ton fichier word mais ta base de données excel

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Liaison entre champ texte et case à cocher
    Par Robjerey dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 16/12/2014, 22h47
  2. [MIGRATION] champ de type "case à cocher"
    Par The_Nail dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 10/05/2011, 11h07
  3. Réponses: 5
    Dernier message: 23/01/2009, 15h26
  4. Réponses: 1
    Dernier message: 01/08/2006, 17h01
  5. modifier champ texte en cases à cocher multiples
    Par gator dans le forum Langage
    Réponses: 7
    Dernier message: 03/07/2006, 11h41

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