XL 2016 trouver numéro de ligne correspondant à une date donnée [RESOLU]]

  • Initiateur de la discussion Initiateur de la discussion moutchec
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

moutchec

XLDnaute Occasionnel
bonjour le forum, bonjour à tous,
je rame pour mettre dans une variable le numéro de ligne d'une date.
en fait j'ai des dates en colonne B et j'aimerais indiquer une date (dans une cellule par exemple) et demander au code de trouver la mémé date en colonne B et stocker le numéro de ligne dans une variable.
qlq a une idée svp?
merci d'avance.
Moutchec
 
Bonsoir Moutchec, bonsoir le forum,

En pièce jointe un petit fichier exemple (pas eu la flemme comme toi !...) avec la macro événementielle Change qui agit au changement dans A1 (à adapter) .

Le code :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim DCM As Date 'déclare la variable DCM (Date de la Cellule Modifiée)
Dim DB As Date 'déclare la variable DB (Date de la Boucle)
Dim LI As Integer 'déclare la variable LI (LIgne)

'si le changement a lieu ailleurs qu'en A1, sort de la procédure
'à adapter mettre l'adresse de la cellule où tu vas écrire la date
If Target.Address(0, 0) <> "A1" Then Exit Sub
If Target = "" Then Exit Sub 'si la celluel est effacée, sort de la procédure
If Not IsDate(Target.Value) Then 'condition : si la cellule n'est pas une date ou pas une date valide
    MsgBox "Date non valide !" 'message
    Target.Select 'revient à la cellule modifiée
    Exit Sub 'sort de la procédure
End If 'fin de la condition
DL = Cells(Application.Rows.Count, "B").End(xlUp).Row 'définit la denière ligne éditée DL de la colonne B
DCM = DateSerial(Year(Target.Value), Month(Target.Value), Day(Target.Value)) 'définit la date DCM de la cellule modifiée
For I = 1 To DL 'boucle sur toutes les lignes I de la colonne B (de 1 à DL)
    'définit la date de DB de la cellule de la boucle
    DB = DateSerial(Year(Cells(I, "B").Value), Month(Cells(I, "B").Value), Day(Cells(I, "B").Value))
    'si les deux date corresponde, définit la ligne LI et sort de la boucle
    If DCM = DB Then LI = I: Exit For
Next I 'prochaine ligne de la boucle
If LI = 0 Then Exit Sub 'si LI est égale à 0, sort de la procédure
Cells(LI, "B").Select 'délectionne la cellule ligne LI colonne B (cette ligne peut être supprimée)
MsgBox "La date se trouve dans la ligne " & LI 'message (cette ligne peut être supprimée)
End Sub

Le fichier :
 

Pièces jointes

Bonjour à tous,

Si les dates sont saisies et non calculées, pour une recherche sans boucle, changer la fin de la macro de Robert depuis le For avec :
VB:
    Set c = [B:B].Find(Target.Value, , xlFormulas, xlWhole)
    If c Is Nothing Then
        MsgBox "Date absente"
    Else
        MsgBox "La date se trouve dans la ligne " & c.Row    'message (cette ligne peut être supprimée)
    End If
Si elles sont calculées il faut utiliser WorksheetFunction.Match
eric
 
Bonjour le fil,

Mon interprétation de la question (en me basant sur le descriptif du message#1)
"Des dates en colonne B, une date critèré dans une cellule et mettre un numéro de ligne dans une variable"
😉
PS: La macro TestC est juste là pour commodité de lecture.
VB:
Sub TestA()
Dim Madate
Madate = DateSerial(Year([D2]), Month([D2]), Day([D2]))
Columns("B:B").AutoFilter 1, Madate
End Sub
Sub TestB()
Dim NumLigne&
MsgBox ActiveSheet.AutoFilter.Range.Offset(1, 0).SpecialCells(12)(1).Row
NumLigne = ActiveSheet.AutoFilter.Range.Offset(1, 0).SpecialCells(12)(1).Row
MsgBox NumLigne
End Sub
Sub TestC()
Dim p As Range, NumLigne&
Set p = ActiveSheet.AutoFilter.Range.Offset(1, 0)
NumLigne = p.SpecialCells(12)(1).Row
MsgBox NumLigne
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
229
Retour