Bonjour,

je bosse actuellement sur l'ajout de fonctions d'un logiciel de gestion. On m'a demandé de modifier la mise en forme des impressions de facture, j'ai donc un document Word composé de tableaux et bourré de code VBA auquel je ne comprends que peu de choses. J'ai quand même réussi à comprendre à peu près les liens avec la BD et j'ai bien refait l'affichage tel que le patron le voulait mais maintenant j'ai un problème avec un tableau :

J'ai un tableau de 2lignes, l'une est une entete l'autre recoit le contenu d'une requête sur base de données Access2003.

Quand le résulat de la requête comprend 3 enregistrements (par exemple) au lieu d'avoir un tableau de 4 lignes (1ligne d'entete, et 3lignes correspondant à chaque enregistrement) j'ai toujours que 2 lignes (1 entête et 1ligne contenant que le dernier enregistrement qui a écrasé les 2 précédents) alors qu'avant j'avais la 2ème ligne qui se duplicait autant de fois que le nombre d'enregistrements. Je voudrais que la 2ème du tableau se duplique comme avant (en fait sur la facture ca corresponds à la liste des produits facturés).

Sachant que j'ai également vu qu'il y avait beaucoup de code Microsoft Script Editor, pouvez-vous m'indiquer quelle commandes gère cette "duplication" svp ou d'une facon ou d'une autre comment résoudre le problème svp?

Je vous mets le code concernant l'affichage de ce tableau mais je doute que ca vous soit utile vu le nombre d'abreviations sur les variables "sur BD" :

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
'lecture des lignes
cfl.nf = cfe.nf: cfl.nlf = "": ligne = 0: tot1 = 0: totc1 = 0
db_rech "s", "cfl", codret, 1
Do While codret <> 1
    If cfl.nf = cfe.nf Then
        'recherche unité de conditionnement
        uco.c = cfl.uc: db_rech "s", "uco", codret, 1: If Trim$(uco.l) = "" Then uco.l = cfl.uc
        'nouvelle ligne
        If ligne <> 0 Then
            ActiveDocument.Tables(3).Cell(ligne + 1, 6).Select
            Selection.MoveRight Unit:=12
        End If
 
        'colonne 1 : code article et réf code client
        cpc.cc = cce.cc1t: cpc.ca = cfl.cp: db_rech "s", "cpc", codret, 1: If codret <> 0 Then cpc.ac = ""
        bb$ = Trim$(cfl.cp)
        If Trim$(cpc.ac) <> "" Then bb$ = bb$ & ls & "Ref Art Client " & Trim$(cpc.ac)
        If Trim$(cfl.rcp) <> "" Then bb$ = bb$ & ls & "Réf Cde Client " & Trim$(cfl.rcp)
        bb$ = bb$ & ls & "BL " & Trim$(cfl.nb) & " Ligne " & Trim$(cfl.nlb)
        ActiveDocument.Tables(3).Cell(ligne + 2, 1).Range.Text = bb$
 
        'colonne 2 : désignation
        bb$ = Trim$(cfl.d1)
        If Trim$(cfl.d2) <> "" Then bb$ = bb$ & ls & Trim$(cfl.d2)
        If Val(cfl.qg) <> 0 Then bb$ = bb$ & ls & "Dont Gratuit"
        If Val(cfl.mr) <> 0 Then bb$ = bb$ & ls & Trim$(cfl.lr)
        If Val(cfl.mr1) <> 0 Then bb$ = bb$ & ls & Trim$(cfl.lr1)
        If Val(cfl.mr2) <> 0 Then bb$ = bb$ & ls & Trim$(cfl.lr2)
        If Val(cfl.mr3) <> 0 Then bb$ = bb$ & ls & Trim$(cfl.lr3)
        If Val(cfl.ms) <> 0 Then bb$ = bb$ & ls & Trim$(cfl.ls)
        If Val(cfl.mc) <> 0 Then bb$ = bb$ & ls & "Consigne " & Format$(Val(cfl.q))
        If Val(cfl.rfc) <> 0 Then bb$ = bb$ & ls & "Nb Colis " & Format$(Val(cfl.rfc)) & " " & Trim$(uco.l)
        ActiveDocument.Tables(3).Cell(ligne + 2, 2).Range.Text = bb$
 
        'colonne 3 : quantités
        cc$ = Format$(Val(cfl.q)) & " " & Trim$(cfl.uca)
        If Trim$(cfl.d2) <> "" Then cc$ = cc$ + ls
        If Val(cfl.qg) <> 0 Then cc$ = cc$ & ls & Format$(Val(cfl.qg)) & " " & Trim$(cfl.uca)
        If Val(cfl.mr) <> 0 Then cc$ = cc$ + ls
        If Val(cfl.mr1) <> 0 Then cc$ = cc$ + ls
        If Val(cfl.mr2) <> 0 Then cc$ = cc$ + ls
        If Val(cfl.mr2) <> 0 Then cc$ = cc$ + ls
        If Val(cfl.ms) <> 0 Then cc$ = cc$ + ls
        If Val(cfl.mc) <> 0 Then cc$ = cc$ + ls
        ActiveDocument.Tables(3).Cell(ligne + 2, 3).Range.Text = cc$
 
        'colonne 4 : prix unitaire et remises
        dd$ = Format$(Val(cfl.pu), formont)
        If Trim$(cfl.d2) <> "" Then dd$ = dd$ + ls
        If Val(cfl.qg) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.mr) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.mr), "-0.00")
        If Val(cfl.mr1) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.mr1), "-0.00")
        If Val(cfl.mr2) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.mr2), "-0.00")
        If Val(cfl.mr3) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.mr3), "-0.00")
        If Val(cfl.ms) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.ms), formont)
        If Val(cfl.mc) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.mc), formont)
        ActiveDocument.Tables(3).Cell(ligne + 2, 4).Range.Text = dd$
 
        'colonne 5 : prix total ligne
        dd$ = Format$((Val(cfl.pu) * (Val(cfl.q) - Val(cfl.qg))) - Val(cfl.mr) - Val(cfl.mr1) - Val(cfl.mr2) - Val(cfl.mr3) + Val(cfl.ms), formont)
        tot1 = tot1 + Val(dd$)
        If Trim$(cfl.d2) <> "" Then dd$ = dd$ + ls
        If Val(cfl.qg) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.mr) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.mr1) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.mr2) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.mr3) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.ms) <> 0 Then dd$ = dd$ + ls
        If Val(cfl.mc) <> 0 Then dd$ = dd$ & ls & Format$(Val(cfl.mc) * Val(cfl.q), formont)
        ActiveDocument.Tables(3).Cell(ligne + 2, 5).Range.Text = dd$
 
        'colonne 6 : code tva
        ActiveDocument.Tables(3).Cell(ligne + 2, 6).Range.Text = cfl.ct
        totc1 = totc1 + (Val(cfl.mc) * Val(cfl.q))
 
        'lecture ligne suivante
        ligne = ligne + 1
        db_rech "n", "cfl", codret, 1
        Else
        codret = 1
    End If
Loop
Le tableau concerné se nomme donc "ActiveDocument.Tables(3)".