Premiere date sup. ou egale a date de reference dans liste en colonne

MartiFab

XLDnaute Nouveau
Bonjour le forum,

Je dispose d’une liste de dates en colonne. Je dispose d’une date de référence. Je souhaite écrire un bout de code me renvoyant l’indice de ligne de la première cellule contenant une date supérieure ou égale a la date de référence.

Je suis parvenu a un résultat satisfaisant en remplaçant les dates par des entiers longs. Voici le code utilise :

Code:
Sub Test()

    Dim i As Long, ref As Long    
    Dim sDte As Long
    
    ref = ThisWorkbook.Worksheets(1).Cells(2, 3).Value

    sDte = 0 ' ici mon indice de ligne
    For i = 1 To 27
        If ThisWorkbook.Worksheets(1).Cells(i, 1).Value <= ref Then
            sDte = sDte + 1
        End If
    Next

    MsgBox sDte

End Sub

Cependant, lorsque j’essaie de m’attaquer aux dates. Cela ne marche pas. Je suppose qu'il doit y avoir un probleme lors de la comparaison, une question de format sans doute.
De plus cette manière de faire ne me convient pas tellement. Je me demandais si l’utilisation d’un objet range et d’une boucle while ne serait pas plus judicieuse. Malheureusement, mais essais ont été couronnes d’insuccès. Je ne doute pas que certains d’entre vous se montreront plus inspires et brillants que moi !

Pour les bonnes âmes qui souhaiteront m’aider et pour satisfaire les curieux je joint un fichier exemple a ma requête.

Merci a vous !
 

Pièces jointes

  • exMartiFab.xls
    41 KB · Affichages: 49
  • exMartiFab.xls
    41 KB · Affichages: 49
  • exMartiFab.xls
    41 KB · Affichages: 47

mth

XLDnaute Barbatruc
Re : Premiere date sup. ou egale a date de reference dans liste en colonne

Bonjour,

Peut-être comme ceci?:

Code:
Sub Test()
    Dim i As Long, ref As Date
    Dim sDte As Long
 
    ref = ThisWorkbook.Worksheets(2).Cells(2, 3).Value
    sDte = 0 ' ici mon indice de ligne
    For i = 1 To 27
        If ThisWorkbook.Worksheets(2).Cells(i, 1).Value <= ref Then
            sDte = sDte + 1
        End If
    Next
    MsgBox sDte
End Sub

Bien à toi,

mth

Edit: :) :) Hello Dull :) :)
Contente de te croiser :)
Bises,
m
 
Dernière édition:

Dull

XLDnaute Barbatruc
Re : Premiere date sup. ou egale a date de reference dans liste en colonne

Salut MartyFab, le Forum

essaye cela eventuellement

Code:
Sub Bouton1_QuandClic()
    Dim i As Long, ref As Longs, Dte As Long
    ref = ThisWorkbook.Worksheets(2).Cells(2, 3).Value
    sDte = 0 ' ici mon indice de ligne
    For i = 1 To 35
        If ThisWorkbook.Worksheets(2).Cells(i, 1).Value <= ref Then
            sDte = sDte + 1
        End If
    Next
    MsgBox sDte
End Sub
Edit: Salut Mimi :) ...MoiItou :)
Bonne Journée
 
Dernière édition:

MartiFab

XLDnaute Nouveau
Re : Premiere date sup. ou egale a date de reference dans liste en colonne

Salut mth, Dull,

Merci de vos reponses. Effectivement cela marche bien. Mon probleme venait du fait que j'essayais de faire rentrer la date de reference par l'utilisateur en utilisant un calendrier dans un userform. La date ainsi rentre etait au format americain (mm/dd/yyyy) et etait comparee a des dates en format dd/mm/yyyy. Vu comme ca, ca ne pouvait que ne pas marcher !

Je joins le fichier avec l'userform sur la feuille 2.

J'essaie une autre facon de faire avec une boucle while mais je n'y arrive pas. Auriez-vous une idee?

Encore merci a bientot
 

MartiFab

XLDnaute Nouveau
Re : Premiere date sup. ou egale a date de reference dans liste en colonne

Desole,

Je me suis manque en mettant mon fichier en PJ
 

Pièces jointes

  • exMartiFab.xls
    51 KB · Affichages: 52
  • exMartiFab.xls
    51 KB · Affichages: 52
  • exMartiFab.xls
    51 KB · Affichages: 52

mth

XLDnaute Barbatruc
Re : Premiere date sup. ou egale a date de reference dans liste en colonne

re :)

Sourire.... et dire qu'une simple formule suffirait ...
Code:
=EQUIV(C2;A:A;1)


Si tu tiens absolument au VBA, ton code semble fonctionner (pour tester il vaut mieux remonter le temps en 2010 si non on tombe naturellement toujours sur la dernière ligne)

Pour que ta dernière ligne s'adapte en fonction des données de la colonne A, au lieu de figer la plage tu peux sans doute remplacer la ligne de la clause For comme ceci:

Code:
For i = 1 To Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row

Bien à toi,

mth
 

Discussions similaires

Statistiques des forums

Discussions
314 450
Messages
2 109 724
Membres
110 552
dernier inscrit
jasson