Formules extraire Date

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

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

Bonjour ,

un essai macro :
VB:
Sub Synthèse()
Dim T, dico, TT, Plage As Range, i As Long
Set dico = CreateObject("Scripting.Dictionary")
With Worksheets("Releve")
Set Plage = .Range("A2:B" & .Range("A" & Rows.Count).End(xlUp).Row)
Plage.Sort Key1:=Range("A2"), Order1:=xlAscending
End With
T = Plage
For i = LBound(T, 1) To UBound(T, 1) - 1
    T(i, 1) = CDbl(T(i, 1))
    If Month(T(i, 1)) <> Month(T(i + 1, 1)) Then dico(T(i, 1)) = T(i, 2)
Next

dico(T(UBound(T, 1), 1)) = T(UBound(T, 1), 2)
TT = Application.Transpose(Array(dico.keys, dico.Items))

With Worksheets("Synthese")
.Range("A2").Resize(UBound(TT, 1), UBound(TT, 2)) = TT
.Columns(1).NumberFormat = "m/d/yyyy"
End With
End Sub

A+
 
Re,

avec l'utilisation des tableau, on a souvent ce genre de souci avec les dates qui passent au format US.
J'avais pris soin d'y remédier, mais la dernière ligne est passée à coté.

Rajouter juste avant :
Code:
dico(T(UBound(T, 1), 1)) = T(UBound(T, 1), 2)
la ligne suivante :
Code:
T(UBound(T, 1), 1) = CDbl(T(UBound(T, 1), 1))

A+

Edit : Bonjour job75
 
Dernière édition:
Bonjour Paulle, re-bonjour Paf,

Voyez le fichier joint et cette formule matricielle en Synthese!A2 :
Code:
=SIERREUR(INDEX(Releve!A:A;PETITE.VALEUR(SI(ESTNUM(Releve!$A$1:$A$1000);SI(LIGNE(Releve!$A$1:$A$1000)=EQUIV(DATE(ANNEE(Releve!$A$1:$A$1000);MOIS(Releve!$A$1:$A$1000)+1;0);Releve!$A$1:$A$1000);LIGNE(Releve!$A$1:$A$1000)));LIGNES(A$2:A2)));"")
A valider par Ctrl+Maj+Entrée puis à copier à droite et vers le bas.

Nota : les dates dans Releve!A:A doivent être toujours classées en ordre croissant.

Il peut y avoir des cellules vides ou des textes intercalés.

Bien entendu adapter la valeur 1000 (ligne maxi) au besoin réel.

A+
 

Pièces jointes

Bonsour®
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.
sans formule ni macro...
Tableau croisé dynamique :
upload_2016-12-6_18-30-21.png
*
 
Re,

Une solution VBA, toujours en supposant les dates classées chronologiquement :
Code:
Private Sub Worksheet_Activate()
Dim t, i&, x$, anmois$, n&
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
For i = 1 To UBound(t)
  If IsDate(t(i, 1)) Then
    x = Year(t(i, 1)) & Month(t(i, 1))
    If x <> anmois Then anmois = x:: n = n + 1
    t(n, 1) = t(i, 1): t(n, 2) = t(i, 2)
  End If
Next
If n Then [A2].Resize(n, 2) = t
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 est à placer dans le code de la feuille "Synthese", elle se déclenche quand on active la feuille.

Fichier joint.

Pour les durées d'exécution j'ai testé sur Win 10 - Excel 2013 avec 3000 dates donnant 102 mois :

- Classeur(3).xlsx => 0,5 seconde

- Classeur VBA(1).xlsm => 0,01 seconde.

A+
 

Pièces jointes

Dernière édition:
- 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
4
Affichages
546
R
Réponses
3
Affichages
817
M
  • Question Question
Réponses
3
Affichages
807
Réponses
2
Affichages
2 K
Retour