Formules extraire Date

Paulle

XLDnaute Occasionnel
Bonjour,

Je voudrai récupérer dans la feuille Synthese le dernier jour de chaque mois et le montant correspondant de la feuille Releve.

J’ai bien tenté des formules =Max(Si(…., mais sans succès.
J’ai mis un fond jaune à titre indicatif pour les cellules du dernier jour de chaque mois.

En récupérant les valeurs Date et Montant de la feuille Synthese, je voudrai faire un graphique dans la feuille Graph.
Cela je pense pouvoir y arriver.

Merci pour votre aide.
 

Pièces jointes

  • Classeur01.xlsm
    9.2 KB · Affichages: 57

job75

XLDnaute Barbatruc
Re,

Avec le Dictionary la feuille source "Releve" peut être triée ou filtrée comme on veut sans inconvénient :
Code:
Private Sub Worksheet_Activate()
Dim t, d As Object, i&, x$, n&, j&
With Feuil1 'CodeName de la 1ère feuille
  If Application.Count(.[A:A]) = 0 Then GoTo 1 'si aucune date
  t = .[A1].Resize(Application.Match(9 ^ 9, .[A:A]), 2) 'matrice, plus rapide
End With
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(t)
  If IsDate(t(i, 1)) Then
    x = Year(t(i, 1)) & Month(t(i, 1))
    If Not d.exists(x) Then n = n + 1: d(x) = n: t(n, 1) = t(i, 1): t(n, 2) = t(i, 2)
    j = d(x)
    If t(i, 1) > t(j, 1) Then t(j, 1) = t(i, 1): t(j, 2) = t(i, 2)
  End If
Next
If n = 0 Then GoTo 1 'sécurité
Application.ScreenUpdating = False
With [A2].Resize(n, 2)
  .Value = t 'restitution
  .Sort .Columns(1), xlAscending, Header:=xlNo 'tri sur les dates
End With
1 Range("A" & n + 2 & ":B" & Rows.Count) = ""
[A1].Resize(n + 1).Name = "X" 'plage nommée
[B1].Resize(n + 1).Name = "Y" 'plage nommée
End Sub
La macro trie à la fin le tableau des résultats.

Fichier (2).

C'est juste un peu moins rapide que précédemment : 0,02 seconde pour 3000 dates et 102 mois.

A+
 

Pièces jointes

  • Classeur VBA(2).xlsm
    31.4 KB · Affichages: 43
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 275
Messages
2 086 709
Membres
103 377
dernier inscrit
fredy45