Bonjour, j'ai telecharge le code, il marche tres bien lorsque qu'il y a une seule page mais quand j'ai deux page ca m'efface le contenu de ma derniere colonne, je comprend pas :

le code :

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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
Option Explicit

Dim MaDb As String
Dim CnStr As String
Dim TitreImp As String

Dim CnnDb As ADODB.Connection
Dim RsSoc As ADODB.Recordset

Dim NbreLigne As Integer
Dim t As Integer
Dim k As Integer

Private Sub CmdFermer_Click()
FrmJeunesParActivite.Hide
End Sub

Private Sub CmdImprimer_Click()

    CmdImprimer.Enabled = False
    
    ' Chargement de la grille qui contiendra les x données d'une page
    Load FlexSel(1)
    
    FlexSel(1).Visible = False
    
    ' Vide la grille d'impression
    Set FlexSel(1).DataSource = Nothing
    'Le probleme semble etre ici
    ' test du nombre de ligne pour savoir si l'impression doit se faire sur plusieurs pages
    If RsSoc.RecordCount < NbreLigne Then ' une seule page
        Set FlexSel(1).DataSource = RsSoc
        ImprimeFlex
    Else    ' plusieurs pages
        FlexSel(1).Rows = 35
        k = 1
        With RsSoc
            .MoveFirst
            Do While Not .EOF
                FlexSel(1).Row = k
                For t = 1 To 4
                    FlexSel(1).Col = t
                    If IsNull(.Fields(t - 1)) Then
                        FlexSel(1).Text = ""
                    Else
                        FlexSel(1).Text = .Fields(t - 1)
                    End If
                Next t
                k = k + 1
                If k = 35 Then
                    ImprimeFlex
                    FlexSel(1).Clear
                    k = 1
                End If
                .MoveNext
            Loop
        End With
        FlexSel(1).Rows = k - 1
        ImprimeFlex
    End If
               
    ' suppression de la grille d'impression
    Unload FlexSel(1)
    CmdImprimer.Enabled = True
    FrmJeunesParActivite.Hide

End Sub

Private Sub Form_Load()

    ' Ouverture de la connection à la base de données
    Set CnnDb = New ADODB.Connection
    Set RsSoc = New ADODB.Recordset
' Mode d'utilisation
    CnnDb.CursorLocation = adUseClient
    CnnDb.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
                                    & "SERVER=192.168.0.30;" _
                                    & "DATABASE=loisirsenliberte;" _
                                    & "UID=root;" _
                                    & "PWD=passroot;" _
                                    & "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
' Ouvrir la connexion
    CnnDb.Open
' Crée une référence pour une Recordset
 RsSoc.Open "SELECT DateActivite, activite.NumActivite, LibelleActivite, NomJeune, PrenomJeune FROM jeune, participer, activite WHERE jeune.NumJeune = participer.NumJeune AND participer.NumActivite = activite.NumActivite ORDER BY NumActivite ASC;", CnnDb, adOpenKeyset, adLockBatchOptimistic
        
    ' Mise en page du MSHFlexgrid
    
    Set FlexSel(0).DataSource = RsSoc
    
    FlexSel(0).ColWidth(0) = 150
    FlexSel(0).ColWidth(1) = 2000
    FlexSel(0).ColWidth(2) = 2000
    FlexSel(0).ColWidth(3) = 2000
    FlexSel(0).ColWidth(4) = 2000
    FlexSel(0).ColWidth(5) = 2000
    
    FlexSel(0).ColHeader(0) = flexColHeaderOn
    
    FlexSel(0).Visible = True
    
    FlexSel(0).Row = 0
    FlexSel(0).Col = 0
    
    ' Initialisation du nombre de ligne d'impression sur une page
    NbreLigne = 36
    
End Sub
Private Sub ImprimeFlex()

    FlexSel(1).ColWidth(0) = 200
    FlexSel(1).ColWidth(1) = 2000
    FlexSel(1).ColWidth(2) = 2000
    FlexSel(1).ColWidth(3) = 2000
    FlexSel(1).ColWidth(4) = 2000
    FlexSel(1).ColWidth(5) = 2000
    
    FlexSel(1).ColHeader(0) = flexColHeaderOn
    
    FlexSel(1).Col = 0
    FlexSel(1).Row = 0
        
    Printer.Orientation = 1
    TitreImp = "Liste des jeunes inscrits aux activités"
    Printer.CurrentX = (Printer.Width - Printer.TextWidth(TitreImp)) / 2
    Printer.CurrentY = 200
    Printer.FontName = "Tahoma"
    Printer.FontSize = 14
    Printer.FontBold = True
    Printer.Print TitreImp
    Printer.PaintPicture FlexSel(1).Picture, 500, 800
    Printer.EndDoc
    
End Sub
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
Option Explicit
 
Public fMainForm As FrmJeunesParActivite
 
Public PathDb As String
 
Sub Main()
 
    Set fMainForm = New Impression
 
    Load fMainForm
    fMainForm.Show
 
End Sub
 
Public Sub ImageFond(Feuille As Form)
    Feuille.ImgFond.Move 0, 0, Feuille.ScaleWidth, Feuille.ScaleHeight
End Sub
Merci d'avance