Bonjour,
Merci à vous deux, grâce à votre aide j'ai grandement pu avancer.
Je me retrouve néanmoins devant un nouveau problème.
J'ai réussi à extraire la plage contenant la date minimale de transaction pour un numéro donné.
Néanmoins, parfois, cette plage n'est pas unique.
J'ai alors voulu introduire un Countif sur cette plage pour déterminer si elle contenait une ou plusieurs cellules.
Ça marchait bien hier, mais depuis ce matin, je me tape une erreur d'exécution 1004 "impossible de lire la propriété Countif de la classe worksheetfunction".
Et là, je suis perdu. Voici le code :
Option Explicit
Global numeroGM, mindate, maxdate, minkm, maxkm, minheure, maxheure As Variant
Global c, cel, cell, cell2, cell3, cell4, cell5 As Range
Sub aTest()
Dim x As Variant
Application.ScreenUpdating = False
'Prend la valeur d'un numéro G dans la feuille Contrôles
numero = "XX"
'Trouve la range où apparaît le numéro GM dans la BDD filtrée
Worksheets("bddfiltrée").Select
Set cell = FindAll(Range("L2:L" & Range("L" & Rows.Count).End(xlUp).Row), numeroGM)
MsgBox cell.Address
'MsgBox x
' Décale à la colonne Date de transaction
Set cell2 = cell.Offset(0, 3)
'Transforme les valeurs en date
'For Each c In cell2
'c.Value = CDate(c)
'Next c
' Trouve la date minimale
mindate = Application.WorksheetFunction.Min(cell2)
MsgBox (mindate & " " & cell2.Address)
'Teste si la plage cell contient une ou plusieurs valeurs
x = Application.WorksheetFunction.CountIf(cell2, mindate)
MsgBox x
'Si la plage n'est pas unique, on fait une recherche sur les heures
If x <> 1 Then
Set cell5 = FindAll(cell2, CDate(mindate)).Offset(0, 1)
'Changer le format des cellules en heures
For Each c In cell5
c.NumberFormat = "[$-F400]h:mm:ss AM/PM"
c.Value = Hour(c)
Next c
minheure = Application.WorksheetFunction.Min(cell5)
MsgBox (minheure & " " & cell5.Address)
'mindate = FindAll(cell5, Hour(minheure)).Offset(0, -1)
'MsgBox mindate
End If
End Sub
De plus, j'ai du mal à comprendre l'histoire de format des cellules. Dans ma BDD filtrée, les heures sont aux format heures mais le worksheetfunction.min ne marche que si je passe par un Cdate ?
Du coup, quand j'essayais hier de comparer les heures, je m'emmêlais également les pinceaux. Elles sont afficheés en format "hh:mm" (16:14 par ex), j'ai voulu alors changer le format (j'ai trouvé le c.NumberFormat = "[$-F400]h:mm:ss AM/PM" grâce à l'enregistreur de macro pour pouvoir les traiter mais pareillement le min me donne des 0.
Cordialement.