MP2P
Messages postés5Date d'inscriptionlundi 7 février 2005StatutMembreDernière intervention 5 janvier 2006
-
31 août 2005 à 17:12
Zlub
Messages postés809Date d'inscriptionmercredi 11 octobre 2000StatutMembreDernière intervention29 septembre 2010
-
1 sept. 2005 à 10:24
salut a tous
j'effectue un projet en vb je dois utiliser une flexgrid le probleme c'est que je n'arrive pas a faire une sélection de plusieurs lignes (elles ne doivent pas forcement etre à la suite) recupérer les lignes sélectionnées pour pouvoir imprimer dans un document
j'arrive a selectionner une ligne et limprimer mais pas plusieurs lignes
Si quelqu'un aurait des solutions à apporter(codes) envoyer les moi
je dois livrer demin c'est URGENT
For j = 0 To .Cols -
1 'Mise en couleur de la selection
.Col = j
.CellBackColor = Couleur
Next j
End If
Next i
If .Rows 0 Then .RowSel = RowSelect
End With
End Sub
Public Sub update_ligne_select(flex As MSFlexGrid, lignes() As Integer, _
Optional Couleur As Variant = &H80000005, _
Optional CouleurSelect As Variant = vbGreen)
Dim j As Integer
Dim i As Integer
Dim max As Integer
Dim RowSelect As Integer
Dim found As Boolean
With flex
RowSelect = .RowSel
.Col = 0
max = UBound(lignes)
For i = 0 To max
If lignes(i) = .RowSel Then
found = True
.Row = lignes(i)
If .CellBackColor = CouleurSelect Then
For j = 0 To .Cols - 1
.Col = j
.CellBackColor = Couleur
Next j
lignes(i) = -1
End If
End If
Next i
' Ajouter dans le tablo des selected
If Not found Then
If max = 0 Then
ReDim lignes(0 To max + 1)
Else
ReDim Preserve lignes(0 To max + 1)
End If
lignes(max) = .RowSel
End If
If .Rows 0 Then .RowSel = RowSelect
End With
End Sub
C'est clair que c'est à améliorer vu
qu'il faudrait par exemple supprimer du tablo au lieu de mettre -1 ...
que c'est pas terrible de parcourir deux fois le tableau des
selections, alors qu'un seul suffit ... bref c'est perfectible ...
Tout dépend si tu as un faible nombre de lignes dans ta flex :
Si
tel est le cas, tu peux déclarer un tableau de booléen de 0 à
flex.rows-1 (initialisé à false)
et sur le click mettre dans la bonne couleur toutes les colones de flex.rowsel en fonction de tablo(flex.rowsel) et du coups la mise à jour du tablo : tablo(flex.rowsel) not tablo(flex.rowsel). Pour imprimer : parcourir tablo et imprimer si tablo(flex.rowsel) True . Au quel cas, tu simplifiras considérablement les traitements...
Au final, tes lignes selectionnées sont dans tablo que tu n'as plus
qu'à parcourir pour faire la suite de ton traitement d'impression (ici vérifier que -1)...