Personne?
J'ai cherché partout, et je n'y arrive toujours pas..
Personne?
J'ai cherché partout, et je n'y arrive toujours pas..
Tu as lu le tutoriel du site sur la question ? son lien est dans un autre poste sur un probléme de génération pdf, word, excel.
Peut être trouveras tu réponse à ton soucis ?
Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...
Une réponse vous a aidé ? utiliser le bouton
"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Oui, j'ai lu tout les tutoriels que j'ai pu trouvé concernant le puplipostage, la fusion, le pilotage, et j'ai toujours pas réussi à faire le lien entre word et mon programme en VB2005.
J'ai bien trouvé un morceau de code,
ca m'ouvre word, le fichier, ca lance le puplipostage, mais j'aimerais rajouter quelques lignes de code afin d'ouvrir à une certaine ligne de la bdd. Celle qui remplissait la fiche candidat du programme avant que je clique sur "apercu avant impression" ce qui m'ouvre word.
Je m'explique: il y a 1000 candidats dans la bdd, je travaille sur la fiche avec mon programme, par exemple nom: Toutlemonde prénom: Jesuis et toutes autres genre d'info, et puis je souhaite imprimer la fiche candidat, donc je clique sur "apercu avant impression" qui me lance word et le publipostage. Mais il me le lance avec toute la bdd, et moi je souhaiterais qu'il aille directement à la ligne concernée pour m'afficher la bonne fiche à imprimer.
(jsuis pas très claire.. -_-')
Comment faire?
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 'Voici pour la déclaration du code: Dim wdapp As Word.Application 'Démarrer Word Set wdapp = CreateObject("Word.application") With wdapp .Visible = True 'ouvrir le document .Documents.Open "Chemincompletdudocumentwordàouvrir" 'Diriger le publipostage vers un nouveau document .ActiveDocument.MailMerge.Execute End With 'fermer et libérer les objets Set wdapp = Nothing
Faudra que je modifie pour mettre le code en VB2005
J'ai vraiment besoin de cette info...
Si quelqu'un sait
Pourquoi faire du publipostage, remplit ta feuille avec les info que tu a dans ta base de données. u doit pouvoir mettre en forma ta feuille word, et tu imprime. Je ne voit pas pourquoi tu veut faire du publipostage si tu n'a qu'une seule candidature a afficher ??
Sinon, si tu veut a tout pris du publipostage, regarde au niveau des macros sous vba word, a mon avis tu va pouvoir faire ce que tu veut.
Ok, c'est vrai, j'ai peut etre pas vraiment étudié toute les possibilité.
Mais il me faut le format du fichier .dot ou . doc que j'ai avec word. Et à part ouvrir word, avec la feuille, et la bonne ligne de la bdd, comment faire?
ce tuto est tres bien (meme si il est pour c#)
http://jab.developpez.com/tutoriels/dotnet/word/#L5
tu créé des balises que tu rempli grace a tes objets vb.net.
comme ca tu sait sur qu'elle ligne de la base de données tu travail,et tu peut facilement changer la mise en page de ton document sans avoir a remanier ton code...
Merci Bouboune !
Je fonce tester de suite
mon code n'aime pas get_item et je ne sais pas comment le remplacer.
Sinon, j'ai mis des champs de formulaire sur mon fichier word, et qund je l'ouvre, il faudrait donc les remplir avec les données du controle d'avant. (de la form1)
Et c'est ce lien que je n'arrive pas à faire.
La je ne sais pas... Par contre fait attention, le tutoriel est en C#, pas en VB !!
Oui, ne t'inquiètes pas ^^ j'utilise un convertisseur:
http://www.developerfusion.co.uk/uti...sharptovb.aspx
Mais il ne converti pas toujours comme il le faut.. Et j'ai pas réussi à trouver l'équivalent.
Donc je continue mes recherches...
Avec ce code, j'arrive à afficher le numéro de fiche du candidat dans le premier champ.
Comment faire pour y mettre le nom (le premier champ est pour le nom). J'ai testé plusieurs truc, mais sans succès..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'Fields(1) : premier champ du document Word %%% nvDoc.Fields(1).Result.Text = Me.DonneesBindingSource.Position
peut tu mettre un peu plus de code que j'essaye stp, ton topic m'interresse vachement...
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 Private Sub ImrpimerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ImrpimerToolStripMenuItem.Click 'ici, je clique sur ma form1 sur "appercu avant impression" ' connexion à Word Dim msWord As New Microsoft.Office.Interop.Word.Application() msWord.Visible = False ' mettez cette variable à true si vous souhaitez visualiser les opérations. Dim missing As Object = System.Reflection.Missing.Value ' J'ouvre le document word, avec des champ insérés dedans Dim nvDoc As New Microsoft.Office.Interop.Word.Document() nvDoc = msWord.Documents.Open("C:\Program Files\Microsoft Office\Templates\Davidson\FCandidat.doc") ' Attribuer le nom Dim fileName As Object = "Candidat.doc" 'Fields(1) : premier champ du document Word %%% Ici je remplis le champ.. Maism alheureusement, ca ne me met que le numéro de la fiche candidat (alors que je souhaiterais le nom, qui vient juste après dans la table) (sur une ligne de table ca fait: numéro de fiche, nom, prénom, etc..) nvDoc.Fields(1).Result.Text = Me.DonneesBindingSource.Position 'et donc ca m'affiche le numéro de fiche dans le champ -_-' ' Me.DonneesTableAdapter.Fill(Me.BaseDataSet.Donnees) 'Me.DonneesBindingSource.Position = My.Forms.Form1.DonneesBindingSource.Position 'heu.. ses deux lignes, c'est des lignes avec lequelles j'apelle ma bdd, mais c'est pour les avoir sous les yeux ^^ ' Fermeture de word 'msWord.Quit(missing, missing, missing) End Sub
Pourquoi ne pas recuperer les données de ta table dans un tableau, et ensuite parcourir ce tableau pour les inserer dans ton document word
???
car si j'ai compris comment ce marche (toujours pas testé) field(1) est le 1° champs de ton document word, et tu ne lui indique pas clairement ce que tu veut mettre dedans.
essaye pour tester :
car ton code me parait un peu bizarre , mais c'est peu etre moi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 nvDoc.Fields(1).Result.Text = "premier" nvDoc.Fields(2).Result.Text = "deuxieme" nvDoc.Fields(3).Result.Text = "troisieme"...
Oui, j'ai déjà testé, et ca me mets bien dans la premiere case premier, dans la seconde: deuxieme, etc...
C'est bien ca mon probleme, je n'arrive pas à dire à mon code exactement ce que je veux dedans. Ton idée de datagrid me met sur la bonne voie je pense. Mais le datagd serait invisible? et à ce moment là, comment faire après pour dire "tu remplis tel champ avec telle case de la datagd"?
Merci d'avance boubounne, tu m'aides bien =)
Je ne parle pas de datagrid, mais de datareader plutot.
Tu te connecte a ta base de données, tu fait ta requete ce qui te rempli ton dataset. Dans ce dataset, tu n'a qu'une ligne de la base. Il suffit de recuperer les données et de les mettre dans ta feuille :
ca devrait etre pas mal, je l'ai fait de tete, il n'est pas testé...
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 'connection a la base Dim MyConnexion As OleDbConnection = New OleDbConnection("chaine de connection") Dim Mycommand As OleDbCommand = MyConnexion.CreateCommand() Dim myReader As OleDbDataReader 'creation de la requete sql Mycommand.CommandText = "select nom, prenom, age... from personne where id = " & valeur 'ouverture de la connection et recuperation des données MyConnexion.Open() myReader = Mycommand.ExecuteReader() 'on insere les données dans la page xord nvDoc.Fields(1).Result.Text = myReader.GetString(0) nvDoc.Fields(2).Result.Text = myReader.GetString(2) nvDoc.Fields(3).Result.Text = myReader.GetString(3)... 'on ferme la conenction MyConnexion.Close()
Hm, quand j'insère ton code il me dit que
OleDbCommand, OleDbConnection, et OleDbDataReader ne sont pas des types définis.
Je ne vois pas comment adapter le code à mon programme.. -_-;
EDIT: oops, j'avais oublié le Imports System.Data.OleDb ^^
Je teste.. et je tiens au jus
desole, j'ai oublié de te preciser ca :
tu le met avant la declaration de ta classe, tout en haut ca devrait etre mieux ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Imports System Imports System.Data Imports System.Data.OleDb
ok alors, je me retrouve avec une erreur:
Au niveau:Le format de la chaîne d'initialisation n'est pas conforme à la spécification qui débute à l'index 0.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 'connection a la base Dim MyConnexion As OleDbConnection = New OleDbConnection("Faut mettre quoi ici?")
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager