Filtrer donnée dans MSHFlexgrid VB6

Résolu
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
- 3 déc. 2011 à 18:26
avyrex1926
Messages postés
360
Date d'inscription
dimanche 3 décembre 2006
Statut
Membre
Dernière intervention
3 janvier 2012
- 4 déc. 2011 à 14:54
Bonjour a tous,

Je rencontre un probleme en voulant trier des données dans mon MSHFlexgrid1 (Projet VB6)

Je m'explique,

Dand ma colonne 4 se trouve un ID(Numéro de magasin ex:00167D) et dans la colonne 5, ce trouve une date format DD-MM-YYYY ex: (06-11-2011)qui représente la date ou le magasin fut entré sous une nouvelle donnée.

Donc dans ma liste, si je prend par example l'ID:00167D, il peux y avoir plusieurs ligne mais avec des date différente.

EX:
00167D 03-10-2011
00167D 26-09-2011
00167D 26-09-2011
00167D 19-09-2011
00167D 12-09-2011
00167D 05-09-2011
00167D 04-09-2011
00167D 04-09-2011
00167D 04-09-2011
00167D 04-09-2011
00167D 29-08-2011
00167D 22-08-2011
00167D 15-08-2011
00167D 08-08-2011
00167D 01-08-2011
00167D 31-07-2011
00167D 31-07-2011
00167D 31-07-2011
00167D 25-07-2011
00167D 18-07-2011
00167D 11-07-2011
00167D 04-07-2011


Mon probléme est que je veux garder dans mon MSHFlexgrid1 seulement la dernière date, la plus récente, et ce, par ID colonne 4.

Voici mon code jusqu'à maintenant.

Parcontre, j'obtien une erreur:

Erreur d'exécution 381 Indice hors limites avec cette partie du code:
If MSHFlexGrid1.TextMatrix(NewRow, 4) = strCol4 Then

Pouvez-vous m'aider s.v.p.?

Voici mon code complet.

Merci encore pour votre aide.


Private Sub FetchNoRowCol(ws As Excel.Worksheet, ByRef NoOfRows As Long, _
        ByRef NoOfColumns As Long)
   
    NoOfRows = ActiveSheet.Cells.SpecialCells(11).Row
NoOfColumns = ActiveSheet.Cells.SpecialCells(11).Column
               
End Sub


Dim xlObject     As Excel.Application
Dim xlWB         As Excel.Workbook
Dim NoOfRows     As Long
Dim NoOfColumns  As Long
Dim r As Long, NewRow As Long, RowToDelete As Long
Dim strCol4 As String, strCol5 As String
Dim strNewCol4 As String, strNewCol5 As String



For r = 0 To MSHFlexGrid1.Rows - 1
      If r <= MSHFlexGrid1.Rows - 1 Then
         strCol4 = MSHFlexGrid1.TextMatrix(r, 4)
         strCol5 = MSHFlexGrid1.TextMatrix(r, 5)
         If Len(strCol4) > 0 And Len(strCol5) > 0 Then
            strCol5 = CDate(MSHFlexGrid1.TextMatrix(r, 5))
            For NewRow = r - 1 To MSHFlexGrid1.Rows - 1
               RowToDelete = 0
               If NewRow <= MSHFlexGrid1.Rows - 1 Then
                  If MSHFlexGrid1.TextMatrix(NewRow, 4) = strCol4 Then
                     strNewCol5 = CDate(MSHFlexGrid1.TextMatrix(NewRow, 5))
                     If DateDiff("s", strCol5, strNewCol5) > 0 Then
                        RowToDelete = r
                     ElseIf DateDiff("s", strCol5, strNewCol5) < 0 Then
                        RowToDelete = NewRow
                     End If
                     If RowToDelete Then
                        MSHFlexGrid1.RemoveItem RowToDelete
                        r = r - 1
                     End If
                  End If
               End If
            Next NewRow
         End If
      End If
   Next r

11 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
4 déc. 2011 à 08:31
Pourtant, je suis bien dans un project VB6

Permets-moi d'en douter, lorsque je lis ceci :
Private Sub FetchNoRowCol(ws As Excel.Worksheet, ByRef NoOfRows As Long, _
        ByRef NoOfColumns As Long)
   
    NoOfRows = ActiveSheet.Cells.SpecialCells(11).Row
NoOfColumns = ActiveSheet.Cells.SpecialCells(11).Column
               
End Sub

qui ne saurait tourner sous VB6, mais uniquement sous VBA/Excel
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3