Treeview access

Résolu
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 juin 2007 - 27 avril 2007 à 09:59
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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.

12 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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)

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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]

@+: Ju£i?n
Pensez: Réponse acceptée
3
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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...
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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...
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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...
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 avril 2007 à 11:28
Salut,
IL serait bien que tu me montre le code entier de ton form (ou du moins le Load et les parties qui pourraient m'être utile..)

@+: Ju£i?n
Pensez: Réponse acceptée
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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


 
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 avril 2007 à 11:42
interressant le problème
envoi moi ta base (si elle est pas top secret) epsylon9@gmail.copm
car là j'ai du mal à voir.

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 avril 2007 à 11:43
re,
.com bien sû et non .copm

@+: Ju£i?n
Pensez: Réponse acceptée
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
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

@+: Ju£i?n
Pensez: Réponse acceptée
0
fixou81 Messages postés 200 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 12 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.
0
Rejoignez-nous