Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word
Word Forum d'entraide sur le traitement de texte Microsoft Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2011, 16h51   #1
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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 :
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.
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 22h20   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 22h34   #3
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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
Type de fichier : xls Copie de école sept 2011 serge_test.xls (87,5 Ko, 4 affichages)
Type de fichier : docx formulaire_expose_test.docx (18,9 Ko, 4 affichages)
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 23h15   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 00h10   #5
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 09h34   #6
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

Au moins une piste : http://heureuxoli.developpez.com/off.../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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 09h46   #7
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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 :
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à.
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 09h52   #8
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
on ne voit pas le lien: http://heureuxoli.developpez.com/office/sondage/
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 20h45   #9
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/10/2011, 20h59   #10
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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!!
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 17h25   #11
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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 :
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 :
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
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 18h08   #12
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

Il n'y a pas de limite.

Deux codes pour t'en convaincre :

Code :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 21h10   #13
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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.
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 21h14   #14
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 21h27   #15
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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 :
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").
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 22h01   #16
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

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

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

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

Code :
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 !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2011, 12h06   #17
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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
Type de fichier : docx ecole du theatre.docx (53,9 Ko, 3 affichages)
Type de fichier : rar edition planning theatre.rar (27,5 Ko, 5 affichages)
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2011, 12h08   #18
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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 :
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 :
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 13h52   #19
Invité régulier
 
Inscription : novembre 2011
Messages : 8
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 8
Points : 5
Points : 5
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
tetardapatte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2011, 17h06   #20
Invité régulier
 
Inscription : septembre 2005
Messages : 27
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 27
Points : 7
Points : 7
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:
Citation:
j'ai réussi à ouvrir ton fichier word mais ta base de données excel
f69815 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h53.


 
 
 
 
Partenaires

Hébergement Web