Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 trouver la date la plus récente (uniquement sur le jour) contenue dans ma cellule :

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,
Je vous souhaite une belle journée

Je me permets de revenir vers nos chers ténors en vba pour un besoin particulier qui, selon mes recherche n'a jamais été traité, ni sur le forum, ni sur internet.

Il m'est très difficile d'expliquer mon besoin dans le post. Il est, je crois, clairement montré dans le fichier test que je joins à ma demande.

Si vous aviez la solution vba, ça m'arrangerait bien lol
En espérant que ce sera pas trop ch..t à lire.
Je vous remercie vivement,
Amicalement,
lionel,
 

Pièces jointes

  • test_uf_comment.xlsm
    206.5 KB · Affichages: 49
Dernière édition:
Solution
Bonjour Lionel, soan, Yeahou,

Cette solution impose le minimum de contraintes aux dates dans la cellule active :
VB:
Sub DerniereDate()
Dim x$, i%, y$, a(), n%
x = Application.Trim(ActiveCell) 'SUPPRESPACE
For i = 1 To Len(x)
    y = Mid(x, i, 14)
    If y Like "##?##?## ##:##" And IsDate(y) Then ReDim Preserve a(n): a(n) = CDbl(CDate(y)): n = n + 1
Next
If n Then MsgBox "Dernière date " & Format(Application.Max(a), "dd-mm-yy hh:mm")
End Sub
Les renvois à la ligne ne sont pas indispensables.

Il suffit que les dates soient bien des dates formatées "jj-mm-aa hh:mm", le tiret pouvant être un slash /.

A+

job75

XLDnaute Barbatruc
Bonjour Lionel, le forum,

Pas encore fini ce fil ?

Alors puisqu'Excel interprète correctement 29/02/2025 et 31/04/2025 je complète mon post #10 :
VB:
Sub DerniereDate()
Dim x$, i%, dat$, y$, a(), n%
x = Application.Trim(ActiveCell) 'SUPPRESPACE
For i = 1 To Len(x)
    dat = ""
    y = Mid(x, i, 14)
    If y Like "##?##?## ##:##" Then dat = Left(y, 6) & Left(Year(Date), 2) & Mid(y, 7)
    y = Mid(x, i, 16)
    If y Like "##?##?#### ##:##" Then dat = y
    If IsDate(dat) Then ReDim Preserve a(n): a(n) = CDbl(CDate(dat)): n = n + 1
Next
If n Then MsgBox "Dernière date " & Format(Application.Max(a), "dd-mm-yyyy hh:mm")
End Sub

On peut entrer les années comme on veut, avec 2 ou 4 chiffres.

La macro complète les dates de manière que les années aient toutes 4 chiffres.

Cela confirme qu'il est inutile de dire qu'un problème est résolu

A+
 

Usine à gaz

XLDnaute Barbatruc
Bonjour à tous, Bonjour Gérard,

Que de puristes et ça fait plaisir, j'en suis heureux.
C'est ce qui fait, entre autres de vos qualités, la force de notre Forum

"Pas encore fini ce fil ?" = pour moi, les réponses précédentes suffisaient mais mieux c'est toujours mieux
Merci à tous,
lionel,
 

soan

XLDnaute Barbatruc
Inactif
@Yeahou

t'inquiètes pas, c'est normal : Crosoft passe son temps à faire exprès de saboter les fonctionnalités des anciennes versions pour que les utilisateurs se sentent frustrés, et que par dépit, ils passent à la version ultérieure ; c'est même ce qui explique pourquoi leur service d'assistance n'est jamais disponible pour aider convenablement les utilisateurs en détresse : ils se fichent bien éperdument que la hot line soit saturée !

soan
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…