Objectif : parcourir un sous formulaire (SFbouquins) générer par une requête appliquer sur une table (BouquinTb). Il s’agit de générer à partir de ce sous formulaire (SFbouquin) un document Word où va figurer la liste et les références des bouquins que l’opérateur à cocher dans les ChekBox situés dans la première colonne du sous formulaire.
A - Formulaire Bouquin
Liste déroulante = Thématique => Donne la valeur à la requête
Ici Thématique = Cuisine => requête recherchant tout les bouquins sous la thématique cuisine
B - Sous formulaire SFbouquin (Sus le formulaire Bouquin) :
ChekBox NomBouqin RefBouquin CodeInventaire
□ Cuisine Facile 45 123568
Si la CheckBox est cocher (donc = True) alors les références du bouquin vont être mises sur le document word à éditer.
Soit le code suivant :
I - Le code semble fonctionner, cependant quand le bouton (ListeBouquin) est cliquer seul les informations du dernier bouquin qui à été selectionner sont pris en considération dans NomBouquin, RefBouquin et CodeInventaire.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Private Sub ListeBouquin_Click() On Error GoTo Err_ListeBouquin_Click Dim oDb As DAO.Database Dim oRst As DAO.Recordset Dim sqlQuery As String Dim NomBouquin As String Dim RefBouquin As String Dim CodeInventaire As String Set oDb = CurrentDb sqlQuery = "SELECT NomBouqin, RefBouquin, CodeInventaire FROM SFbouquin WHERE SFbouquin.ChekBox = True ;" Set oRst = CurrentDb.OpenRecordset("sqlQuery", dbOpenDynaset) With oRst If .RecordCount <> 0 Then 'Si l'objet recordset retourne au moins un enregistrement .MoveFirst 'Passe au premier enregistrement du jeu Do While Not .EOF 'Tant que la fin du jeu n'est pas atteint NomBouquin = oRst.Fields("NomBouquin").Value RefBouquin = oRst.Fields("RefBouquin").Value CodeInventaire = oRst.Fields("CodeInventaire").Value .MoveNext 'Passe à l'enregistrement suivant Loop End If End With oRst.Close Set oRst = Nothing oDb.Close Set oDb = Nothing Exit_ListeBouquin_Click: Exit Sub Err_ListeBouquin_Click: MsgBox err.Description Resume Exit_ListeBouquin_Click End Sub
Pourriez – vous m’aider a faire en sorte que :
NomBouquin regroupe l'ensemble des noms des bouquins selectionnés.
RefBouquin regroupe l'ensemble des référence des bouquin selectionnés.
CodeInventaire .../...
Commen concevoir les lignes de code adéquate ????
II – Sous word, ensuite les données doivent apparaître de la façon suivante :
Nom des livres :
Signet NomBouquin
(Les noms de bouquin doivent apparaître les un sous les autres)
- Cuisine Facile
- Cuisine Plus …/…
RefBouquin
Signet RefBouquin
(Les références doivent se suivre les unes derrière les autres)
123568 – 125478 - …/…
Seulement il peut y avoir 1 bouquin ou 20 bouquins sélectionner, alors comment gérer les lignes (en gras):
Pourriez –vous me dire comment gérer la mise en page de ces infos sous word par le biais des signets ????
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 Dim WordApp As Word.Application Dim WordDoc As Word.Document Set WordDoc = WordApp.Documents.Open("V:\Biblio\Gestionnaire Biblio\Sortie livre.doc", ReadOnly:=False) WordApp.Visible = True .ActiveDocument.Bookmarks("NomBouquin").Select .Selection.Text = Me.NomBouquin .ActiveDocument.Bookmarks("RefBouquin").Select .Selection.Text = Me.RefBouquin .ActiveDocument.SaveAs (Chemin & "\" & NomFichier & ".doc") Set WordApp = Nothing
Encore merci à ceux qui se pencherons sur le problème.
Partager