fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007
-
27 avril 2007 à 09:59
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007
-
27 avril 2007 à 11:57
bonjour a tous,
cela fait quelques temps que je cherche mais sans resultats. Je me permet donc de vous solliciter s'il vous plait.
voila je suis sous access et j'ai des données dans une table. J'affiche un treeview representant cette table grace au code :
Public Sub remplissageTreeView(oT As Object, odb As DAO.Database, Optional intEmploye As Integer = 0)
Dim strSQL As String
Dim oRst As DAO.Recordset
Dim strLibelle As String
strSQL = "SELECT NumEmploye,NomEmploye,PrenomEmploye,RoleEmploye FROM tblemploye WHERE Responsableemploye=" & intEmploye
Set oRst = odb.OpenRecordset(strSQL)
With oRst
While Not .EOF
'Récupère le nom, le prénom et le role
strLibelle = .Fields(1).Value & " " & .Fields(2).Value & " (" & .Fields(3).Value & ")"
'Test le cas de la racine
If intEmploye = 0 Then
oT.Nodes.Add Key:="Emp" & .Fields(0).Value, _
Text:=strLibelle
Else
oT.Nodes.Add "Emp" & intEmploye, tvwChild, "Emp" & .Fields(0).Value, strLibelle
End If
'Lance le même traitement avec ce responsable
remplissageTreeView oT, odb, .Fields(0).Value
'Passe à l'enregistrement suivant
.MoveNext
Wend
End With
'Ferme le recordset
oRst.Close: Set oRst = Nothing
End Sub
C'est treeview qui a des cases a cocher.
Je souhaite maintenant recuperer les items cochés par l'utilisateur.
(Car mon but est d'utiliser des documents word correspondants aux items du treeview.)
Je n'ai pas trouvé d'autres solution que de devoir mettre les items selectionnés dans une autre table.(pour l'instant)
Donc question : comment récuperer les items cochés et les mettre dans une table ? (Une idée ou un lien utile, clair et precis)
PS : Si vous avez une autre solution pour traiter mon probleme je suis ouvert a n'importe quelle idée!(sachant que je veux qu'un item treeview équivaut à un doc word et au final je veux creer un document qui est la concatenation de tous les documents selectionnés) Je ne sais pas si les mettre dans une table est bien mais je traite mon probleme petits bouts par petits bouts.
voila j'ai essayé d'etre le plus clair possible. Si vous voulez plus d'info je suis là.
Merci a tous.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 27 avril 2007 à 10:18
Salut,
Le code suivant devrait t'adier (en espérant qu il fonctionne sous ACCESS)
Dim Nd As Node
For Each Nd In Tvw.Nodes
If Nd.Checked Then MsgBox Nd.FullPath
Next, ----
[code.aspx?ID=41455 By Renfield]
Avec Tvw le nom de ton treeview.
Ensuite si j'ai bien compris tu veux concatener tout les fichiers Word Checked dans la treeview dans un seul Word.
Mais a mon avis tu n'as pas besoin d'enregistrer les noms en base.
Il te suffit d'ouvrir ton Document total avant la boucle si dessus et a chaque fois que tu trouve un node checked, tu fais le traitement à faire (ajout du document à la fin du document total)
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 27 avril 2007 à 10:48
Salut,
Dans ton IDE VBA ACCESS tu ajoutes la référence à WOrd Menu Outils <gras>> Références> Microsoft Word 9.0 Object Library (9.0 ou équivalent)</gras>
et ensuite dans ton formulaire tu ajoutes un bouton et tu teste ceci
c'est un adaptation de la discution [infomsg.aspx Thèmes] / [infomsgf_VB-NET-VB-2005_40.aspx VB.NET et VB 2005] / [infomsgt_DIVERS_221.aspx Divers] / [infomsgt_DEBUTANTS_227.aspx Débutants] / [infomsg_COPIER-COLLER_904750.aspx?p=2 copier-coller]
que nous avions déjà eu (ATTENTION JE N'AI PAS PU LA TESTER)
Option Compare Database
Private Destination As String
Private WordApp As New Word.Application
Private Sub Commande0_Click()
Dim Nd As Node
'Document de destination
Destination = "C:\documenttotal.doc"
'Ouverture du document de destination
Call WordApp.Documents.Open(Destination)
'Parcours le TreeView
For Each Nd In Tvw.Nodes
'Je suppose ici que lenode contient le chemin d'un
'Fichier mais ce sera peu être à adapter
If Nd.Checked Then Call Cree_Document_Dos(Nd.Text)
Next
'Fermeture du document destination en sauvant
Call Documents(Destination).Close(True)
End Sub<hr />Private Sub CheckDoc(ByVal ChboxValue As Boolean, ByVal NomDoc As String)
'Si le checkox est coché alors on appelle Cree_Document_Dos
'Avec le document a copier/coller
If ChboxValue Then Call Cree_Document_Dos(NomDoc)
End Sub<hr />
Private Sub Cree_Document_Dos(ByVal NomDoc As String)
'Ouvre le Document Correct
Call WordApp.Documents.Open(NomDoc)
'Selectionne tout le contenu
Call WordApp.Selection.WholeStory
'Copie la selection
Call WordApp.Selection.Copy
'Ferme le document sans sauver
Call ActiveDocument.Close
'Selectionne le Document de destianation
Call WordApp.Documents(Destination).Select
'Se place à la fin du document
Call WordApp.Selection.EndOf(wdDocument)
'Colle le contenu
Call WordApp.Selection.Paste
End Sub , ----
[code.aspx?ID=41455 By Renfield]
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 27 avril 2007 à 10:27
Oui ce code marche pour access. Merci bien (en plus il é tou simple)
Tu veux dire que le traitement je le fait sous word ?C'est un coller en fait quelque part...et il y a une commande pour faire cet ajout depuis access.
Merci en tout cas je vais tacher de me renseigner.
Ta reponse a bien repondu a ma question dc je valide...
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 27 avril 2007 à 10:33
Pardon petite erreur de synthaxe. Je voulai dire et il y a une commande pour faire cet ajout depuis access ?
C'est a dire comment ajoute ton un document word a la fin d'un autre depuis access?
Je vais tacher de trouver de mon coté.
merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 27 avril 2007 à 10:58
ouah merci j'etais en train de farfouiller...je l'ai pas testé mais en tout cas il m'aidera c'est sur! Merci tu m'as fait gagner du temps.
Merci beaucoup jrivet ! c tres sympa...
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 27 avril 2007 à 11:26
excuse moi de nouveau mais il y a un truc que je pige pas...j'ai un message d'erreur et lorsque j'enleve la declaration Private WordApp As New Word.Application je ne l'ai plus.(mais ca ne fonctionne pas). Le message d'erreur me dit "l'expression sur chargement entrée comme paramètre de la proprieté de type evenement est a l'origine de l'erreur".C'est que j'ai une procedure load_form pour pouvoir afficher le treeview...je ne comprend pas pourquoi la declaration provoque l'erreur...
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 27 avril 2007 à 11:34
oui tu as raison ce serait mieux
Option Compare Database
Private Destination As String
Private WordApp As New Word.Application
Private Sub Form_Load()
Dim odb As DAO.Database
Set odb = CurrentDb
remplissageTreeView oT, odb
End Sub
ensuite il y a le code de traitement du genre ce que tu mas mis sur tes messages precedents.
remplissage treeview est dans un module1 est c'est
Option Compare Database
Public Sub remplissageTreeView(oT As Object, odb As DAO.Database, Optional intEmploye As Integer = 0)
Dim strSQL As String
Dim oRst As DAO.Recordset
Dim strLibelle As String
strSQL = "SELECT NumEmploye,NomEmploye,PrenomEmploye,RoleEmploye FROM tblemploye WHERE Responsableemploye=" & intEmploye
Set oRst = odb.OpenRecordset(strSQL)
With oRst
While Not .EOF
'Récupère le nom, le prénom et le role
strLibelle = .Fields(1).Value & " " & .Fields(2).Value & " (" & .Fields(3).Value & ")"
'Test le cas de la racine
If intEmploye = 0 Then
oT.Nodes.Add Key:="Emp" & .Fields(0).Value, _
Text:=strLibelle
Else
oT.Nodes.Add "Emp" & intEmploye, tvwChild, "Emp" & .Fields(0).Value, strLibelle
End If
'Lance le même traitement avec ce responsable
remplissageTreeView oT, odb, .Fields(0).Value
'Passe à l'enregistrement suivant
.MoveNext
Wend
End With
'Ferme le recordset
oRst.Close: Set oRst = Nothing
End Sub
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 27 avril 2007 à 11:51
Salut,
Il faut lire ce que je te mets dans mes posts.
je t'avais mis un peu plus haut:
Dans ton IDE VBA ACCESS tu ajoutes la référence à WOrd
Menu Outils => Références => Microsoft Word 9.0 Object Library (9.0 ou équivalent) et ensuite dans ton formulaire tu ajoutes un bouton et tu teste ceci
SI tu n'ajoutes pas la référence, ACCESS ne connaitra pas le type d'objet Word.Application
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 27 avril 2007 à 11:57
pfff merci de ta patience..la g ete bidon sur ce coup, tout ca pour ca vraiment.Merci en tout cas de m'avoir accordé de ton temps, tu m'as beaucoup aidé é désoléde l'oubli. Je vais essayer d'etre plus rigoureux a l'avenir.