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

XL 2016 retourner la valeur d'un donnée évoluant dans le temps à une date donnée

Solution
Bonsoir @OA29 ,
  • En colonne J, une formule pour Office 365.
  • En colonne K, une formule pour les autres versions. Formule matricielle à valider par la combinaison des trois touches Ctrl+Maj+Entrée au lieu de la seule touche entrée.
nota : on a supposé qu'une même personne ne pouvait pas emménager dans deux villes différentes le même jour !

Remarque : votre profil indique Excel 2016 mais vous utilisez dans votre classeur la fonction UNIQUE(). Il y a incohérence!

Évitez d'écrire le texte de votre demande tout en police "gras", svp.


mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @OA29 ,
  • En colonne J, une formule pour Office 365.
  • En colonne K, une formule pour les autres versions. Formule matricielle à valider par la combinaison des trois touches Ctrl+Maj+Entrée au lieu de la seule touche entrée.
nota : on a supposé qu'une même personne ne pouvait pas emménager dans deux villes différentes le même jour !

Remarque : votre profil indique Excel 2016 mais vous utilisez dans votre classeur la fonction UNIQUE(). Il y a incohérence!

Évitez d'écrire le texte de votre demande tout en police "gras", svp.


 

Pièces jointes

  • OA29- ville selon date- v1.xlsx
    13.4 KB · Affichages: 9
Dernière édition:

OA29

XLDnaute Nouveau
Bonsoir mapomme ,

merci pour vos propositions qui fonctionnent parfaitement.

j'utilise 365 sur Mac à la maison, et 2016 sous Windows au travail ; les fichiers que je réalise doivent tourner sous 2016.
concernant la fonction "unique", c'est ma prochaine étape : trouver une parade pour obtenir le même résultat sous 2016...

je découvre la puissance des formules matricielles ; je vais approfondir la question.

cordialement
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Un fichier v2 valable en Excel 2016 avec une formule pour remplacer la fonction UNIQUE().
Les formules matricielles en I11 et J11 sont à recopier vers le bas jusqu'à obtenir des lignes vides.
 

Pièces jointes

  • OA29- ville selon date- v2 (xl2016).xlsx
    11.7 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonsoir OA29, mapomme, bhbh,

Je n'ai pas Microsoft 365 alors j'utilise ces formules matricielles en I11 et J11 :
Code:
=INDEX(Tableau1[nom];PETITE.VALEUR(SI(NON(NB.SI(I$10:I10;Tableau1[nom]));LIGNE(INDIRECT("1:"&LIGNES(Tableau1))));1))
Code:
=SIERREUR(INDEX(Tableau1[ville];EQUIV(I11&RECHERCHE(J$7;PETITE.VALEUR(SI(Tableau1[nom]=I11;Tableau1[date emménagement]);LIGNE(INDIRECT("1:"&LIGNES(Tableau1)))));Tableau1[nom]&Tableau1[date emménagement];0));"")
A+
 

Pièces jointes

  • ClasseurOA29(1).xlsx
    12.3 KB · Affichages: 5

job75

XLDnaute Barbatruc
Bonjour le forum,

Pour terminer voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim datref As Date, tablo, d As Object, dd As Object, i&, nom$, dat, n&
datref = [DateRef] 'cellule nommée
tablo = [Tableau1].Resize(, 3) 'tableau structurée
Set d = CreateObject("Scripting.Dictionary")
Set dd = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo)
    nom = tablo(i, 1)
    dat = tablo(i, 3)
    If nom <> "" Then
        If Not d.exists(nom) Then d(nom) = "": dd(nom) = 0
        If IsDate(dat) Then
            dat = CDate(dat)
            If dat <= datref Then If dat > dd(nom) Then d(nom) = tablo(i, 2): dd(nom) = dat
        End If
    End If
Next
'---restitution---
Application.EnableEvents = False 'désactive les évènements
On Error Resume Next
n = d.Count
With [Tableau2] 'tableau structuré
    .Columns(1).Resize(n) = Application.Transpose(d.keys) 'Transpose est limitée à 65536 lignes
    .Columns(2).Resize(n) = Application.Transpose(d.items)
    .Offset(n).Resize(.Rows.Count - n).Delete xlUp 'RAZ en dessous
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
Elle se déclenche quand on modifie ou valide une cellule quelconque.

A+
 

Pièces jointes

  • OA29 VBA(1).xlsm
    20.7 KB · Affichages: 1

Discussions similaires

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