[Excel] equiv() avec date supérieure

4 réponses
Avatar
LaurentC
Bonjour Í  tous

Dans ma feuille j'ai un tableau structuré nommé "Tableau" avec
plusieurs colonnes dont une nommée "LaDate".
Dans cette colonne, j'ai des dates classées par ordre croissant qui ne
se suivent pas nécessairement et parfois espacées de cellule vide.

Sur cette feuille en K17 j'ai une date au format date (*14/03/2012), la
colonne du tableau a le même format.

En K18 j'aimerai renvoyer le numéro d'ordre dans la série
Tableau[LaDate] de ma date inscrite en K17 voir la date supérieure si
cette date n'est pas dans la liste.

La formule =EQUIV(K17;Tableau[LaDate];0) me renvoie bien le résultat
attendu si la date recherchée est dans la liste ... mais parfois elle
n'y est pas :-(

La formule suivante me renvoie #N/A (avec -1 pour avoir une date
postérieure)
=EQUIV(K17;Tableau[LaDate];-1)

Pourquoi ?

Alors que
=EQUIV(K17;Tableau[LaDate];1) fonctionne mais donne la date antérieure

Je but final est de faire ça en VBA, mais je n'y arrive pas non plus
avec Application.Match ... j'ai essayé xlookup sans plus de succès :-(

Pouvez vous m'aider ?
Paravance merci
@+Laurent

4 réponses

Avatar
MichD
Le 26/04/22 Í  06:33, LaurentC a écrit :
Bonjour Í  tous
Dans ma feuille j'ai un tableau structuré nommé "Tableau" avec plusieurs
colonnes dont une nommée "LaDate".
Dans cette colonne, j'ai des dates classées par ordre croissant qui ne
se suivent pas nécessairement et parfois espacées de cellule vide.
Sur cette feuille en K17 j'ai une date au format date (*14/03/2012), la
colonne du tableau a le même format.
En K18 j'aimerai renvoyer le numéro d'ordre dans la série
Tableau[LaDate] de ma date inscrite en K17 voir la date supérieure si
cette date n'est pas dans la liste.
La formule =EQUIV(K17;Tableau[LaDate];0) me renvoie bien le résultat
attendu si la date recherchée est dans la liste ... mais parfois elle
n'y est pas :-(
La formule suivante me renvoie #N/A (avec -1 pour avoir une date
postérieure)
=EQUIV(K17;Tableau[LaDate];-1)
Pourquoi ?
Alors que
=EQUIV(K17;Tableau[LaDate];1) fonctionne mais donne la date antérieure
Je but final est de faire ça en VBA, mais je n'y arrive pas non plus
avec Application.Match ... j'ai essayé xlookup sans plus de succès :-(
Pouvez vous m'aider ?
Paravance merci
@+Laurent

Bonjour,
Avec le paramètre -1, la plage de tes dates doit être en ordre
décroissant et avec 1, en ordre croissant.
Saisis =Equiv dans une cellule et appuie sur la touche F1 pour accéder Í 
l'aide de cette fonction dans Excel.
Je te propose 2 formules matricielles, la validation est effectuée par
Maj + Ctrl + Enter
Si tu veux avoir la date comme résultat :
A1:A12 -> plage des dates
D1 -> la date recherchée
=MIN(SI(A1:A12>D1;A1:A12))
Si tu veux obtenir le numéro de la ligne o͹ se retrouve la date
recherchée: (cellule au format numérique)
=EQUIV(MIN(SI(A1:A12>D1;A1:A12));A1:A12;0)
Évidemment la date recherchée doit exister sinon pour éviter un
affichage "#N/A!, tu utilises la formule :
=SIERREUR(EQUIV(MIN(SI(A1:A12>D1;A1:A12));A1:A12;0);"")
La validation en matricielle.
MichD
Avatar
MichD
Le 26/04/22 Í  07:14, MichD a écrit :
Le 26/04/22 Í  06:33, LaurentC a écrit :
Bonjour Í  tous
Dans ma feuille j'ai un tableau structuré nommé "Tableau" avec
plusieurs colonnes dont une nommée "LaDate".
Dans cette colonne, j'ai des dates classées par ordre croissant qui ne
se suivent pas nécessairement et parfois espacées de cellule vide.
Sur cette feuille en K17 j'ai une date au format date (*14/03/2012),
la colonne du tableau a le même format.
En K18 j'aimerai renvoyer le numéro d'ordre dans la série
Tableau[LaDate] de ma date inscrite en K17 voir la date supérieure si
cette date n'est pas dans la liste.
La formule =EQUIV(K17;Tableau[LaDate];0) me renvoie bien le résultat
attendu si la date recherchée est dans la liste ... mais parfois elle
n'y est pas :-(
La formule suivante me renvoie #N/A (avec -1 pour avoir une date
postérieure)
=EQUIV(K17;Tableau[LaDate];-1)
Pourquoi ?
Alors que
=EQUIV(K17;Tableau[LaDate];1) fonctionne mais donne la date antérieure
Je but final est de faire ça en VBA, mais je n'y arrive pas non plus
avec Application.Match ... j'ai essayé xlookup sans plus de succès :-(
Pouvez vous m'aider ?
Paravance merci
@+Laurent

Bonjour,
Avec le paramètre -1, la plage de tes dates doit être en ordre
décroissant et avec 1, en ordre croissant.
Saisis =Equiv dans une cellule et appuie sur la touche F1 pour accéder Í 
l'aide de cette fonction dans Excel.
Je te propose 2 formules matricielles, la validation est effectuée par
Maj + Ctrl + Enter
Si tu veux avoir la date comme résultat :
A1:A12  -> plage des dates
D1 -> la date recherchée
=MIN(SI(A1:A12>D1;A1:A12))
Si tu veux obtenir le numéro de la ligne o͹ se retrouve la date
recherchée: (cellule au format numérique)
=EQUIV(MIN(SI(A1:A12>D1;A1:A12));A1:A12;0)
Évidemment la date recherchée doit exister sinon pour éviter un
affichage "#N/A!, tu utilises la formule :
=SIERREUR(EQUIV(MIN(SI(A1:A12>D1;A1:A12));A1:A12;0);"")
La validation en matricielle.
MichD

Si tu as des cellules vides et que tu veuilles obtenir la position de la
valeur recherchée, tu peux utiliser ceci :
Validation matricielle :
=RANG(MIN(SI(A1:A10>D1;A1:A10));A1:A10;1)
MichD
Avatar
LaurentC
J'ai trouvé solution (assez immonde) Í  mon problème ... mais j'arrive
sur un autre problème ... :-(
J'ouvre un nouveau post, merci Í  ceux qui ont essayé d'interpréter ma
prose incompréhensible.
Avatar
investisseur pluriel
Pour tout besoin de financement privé, plus de souci Í  se faire. Une seule référence. N'hésiter pas de nous contacter
La Caissière
Brigitte Duchaussoy