Treeview access [Résolu]

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

Votre réponse

12 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 avril 2007 à 10:18
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de jrivet
Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 avril 2007 à 10:48
3
Merci
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

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de jrivet
fixou81 200 Messages postés lundi 9 mai 2005Date d'inscription 12 juin 2007 Dernière intervention - 27 avril 2007 à 10:27
0
Merci
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...
Commenter la réponse de fixou81
fixou81 200 Messages postés lundi 9 mai 2005Date d'inscription 12 juin 2007 Dernière intervention - 27 avril 2007 à 10:33
0
Merci
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
Commenter la réponse de fixou81
fixou81 200 Messages postés lundi 9 mai 2005Date d'inscription 12 juin 2007 Dernière intervention - 27 avril 2007 à 10:58
0
Merci
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...
Commenter la réponse de fixou81
fixou81 200 Messages postés lundi 9 mai 2005Date d'inscription 12 juin 2007 Dernière intervention - 27 avril 2007 à 11:26
0
Merci
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...
Commenter la réponse de fixou81
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 avril 2007 à 11:28
0
Merci
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
Commenter la réponse de jrivet
fixou81 200 Messages postés lundi 9 mai 2005Date d'inscription 12 juin 2007 Dernière intervention - 27 avril 2007 à 11:34
0
Merci
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


 
Commenter la réponse de fixou81
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 avril 2007 à 11:42
0
Merci
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
Commenter la réponse de jrivet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 avril 2007 à 11:43
0
Merci
re,
.com bien sû et non .copm

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 27 avril 2007 à 11:51
0
Merci
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
Commenter la réponse de jrivet
fixou81 200 Messages postés lundi 9 mai 2005Date d'inscription 12 juin 2007 Dernière intervention - 27 avril 2007 à 11:57
0
Merci
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.
Commenter la réponse de fixou81

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.