XL 2019 Pointer une ligne selon une condition Excel 2019

  • Initiateur de la discussion Initiateur de la discussion JMP56
  • 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 !

JMP56

XLDnaute Nouveau
Bonjour,
J'ai un tableau Excel 2019 dont la feuille 'Compte courant' contient des lignes évolutives d'opérations bancaires puisqu'il s'agit d'un gestionnaire de compte personnel. La colonne A contient depuis la ligne 5 jusqu'à la dernière ligne (évolutive), la date d'une opération.
Je cherche, en appuyant sur un bouton, à venir pointer sur la ligne dont la date est un an avant la date d'aujourd'hui.
Quelqu'un saurait il me donner le code vba qui permette de réaliser cette action?
Merci.
 
Bonjour @JMP56, le fil

Sans fichier exemple, un test à l'aveugle
1) des dates dans la colonne A
dont une = 24/09/22

la macro ci-dessous pointera dessus
Code:
Sub test()
Dim v_AN As Variant
v_AN = DateAdd("yyyy", -1, Date)
Lig = Application.Match(CLng(v_AN), ActiveSheet.Columns(1), 0)
Application.Goto Cells(Lig, 1), True
End Sub
MoinsUn.png
 
Re

Ca fonctionnera "parfaitement"
• si la date - 1an existe
• si il n'y a pas de doublons

Donc on peut modifier ainsi
Code:
Sub test_bis()
Dim v_AN As Variant, Lig
v_AN = DateAdd("yyyy", -1, Date)
Lig = Application.Match(CLng(v_AN), ActiveSheet.Columns(1), 0)
If Not IsError(Lig) Then
Application.Goto Cells(Lig, 1), True
End If
End Sub
Sub test_ter()
Dim v_AN As Variant, Lig
v_AN = DateAdd("yyyy", -1, Date)
Lig = Application.Match(CLng(v_AN), ActiveSheet.Columns(1), 0)
If IsError(Lig) Then
MsgBox "Aucune date trouvée!", vbCritical
Exit Sub
Else
Application.Goto Cells(Lig, 1), True
End If
End Sub
la dernière macro affichant un message si il n'existe pas date = Aujourdhui - 1 an
 
Dernière édition:
Merci beaucoup. Je teste ça mais il me semble que pour éviter une erreur si il n'existe rien par exemple le 23/09 (c'est ce que semble demander votre code: Application.Goto Cells(Lig, 1), True) c'est que la macro recherche la première date avant la date d'il y a un an demandée (24/09 ce jour).
ex: si la première date avant le 24 est le 21/09, eh bien on pointe le 21/09.
 
Re

Pour le jour d'avant
VB:
Sub test_quatro()
Dim v_AN As Variant, Lig
v_AN = DateAdd("yyyy", -1, Date)
Lig = Application.Match(CLng(v_AN), ActiveSheet.Columns(1), 0)
If IsError(Lig) Then
Liga = Application.Match(CLng(v_AN - 1), ActiveSheet.Columns(1), 0)
Application.Goto Cells(Liga, 1), True
Else
Application.Goto Cells(Lig, 1), True
End If
End Sub
Mais si le jour d'avant n'existe pas lui non plus
😉
 
Bonjour JMP56, JM, le forum,
Si la date n'existe pas, comment pourrait on prendre celle juste avant (exemple le 23/09)?
S'il y en a plusieurs, comment prendre la première de la liste?
VB:
Sub a()
Dim dat&, i
dat = CLng(DateAdd("m", -12, Date))
For dat = dat To Application.Min(Columns(1)) Step -1
    i = Application.Match(dat, Columns(1), 0)
    If IsNumeric(i) Then Cells(i, 1).Select: Exit For
Next
End Sub
A+
 
Re, Bonjour @job75

Comme c'était dans mon VBE, je poste
VB:
Sub test_cinq()
Dim v_AN As Variant, Lig
v_AN = Evaluate("MAXIFS(A:A,A:A,""<=""&EDATE(TODAY(),-12))")
Lig = Application.Match(CLng(v_AN), ActiveSheet.Columns(1), 0)
If Not IsError(Lig) Then
Application.Goto Cells(Lig, 1), True
End If
End Sub
trouvera la date antérieure la plus proche à AUJOURDHUI - 12 mois
 
- 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
18
Affichages
4 K
Réponses
14
Affichages
3 K
Retour