XL 2016 Recherche de date et de valeurs en fonction des dates

M@xu3L

XLDnaute Junior
Bonjour tous le monde,

Je reviens vers vous car je sèche et je n'arrive pas à trouver une solution dans toutes les discussions que j'ai pu lire.

Je recherche une fonction (j'aimerai éviter le VBA) pour faire une recherche de date sur une ligne.

En gros j'ai une ligne (A1) qui contient des dates, mais pas que, et j'aimerai que dans un autre onglet sa puisse me lister toutes les dates présente dans cette ligne. Ensuite dans la colonne d'après j'aimerai avoir une recherche des valeurs présentes sur la ligne 27.

Voila je suis bloquer.

Merci d'avance à ceux qui pourrons m'aider dans cette problématique.

Cordialement
 

Pièces jointes

  • test forum.xlsx
    115.6 KB · Affichages: 3
Solution
Donc vous n'avez pas compris les formules précédentes.
1- Il fallait que les intitulés soient différents Date1,date2,date3 ...
2- Il fallait un Date x sur le bloc suivant le dernier bloc utilisé.
Come ce n'est pas le cas dans votre PJ, j'ai changé de formule avec :
VB:
=SIERREUR(SI(A3="";"";RECHERCHE(9^9;DECALER('2000656 charge alambic  '!$A$27:$O$27;0;EQUIV(A3;'2000656 charge alambic  '!$1:$1;0))));"")
La limite est qu'un bloc fasse moins de 16 colonnes ( <=15 ) car il faut bien limiter la zone de recherche dans le bloc considéré. ( en considérant que les 3 premières colonnes d'un bloc soient des dates, donc n'est rien en ligne 27 )
J'ai laissé l'autre formule en exemple mais cela suppose que les intitulés soient différents.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour M@xu3L,
Dans votre PJ il y a des "blocs" qui font 14 colonnes pour une date, d'autres qui font 15 colonnes.
J'ai tout homogénéiser à 15 colonnes, ce qui simplifie grandement les formules.
On obtient la synthèse avec :
VB:
Date:
=SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE()-1);"")
Valeur:
=SIERREUR(INDEX(test!$27:$27;EQUIV(A2;test!$1:$1;0)+10);"")
 

Pièces jointes

  • test forum (5).xlsx
    151.4 KB · Affichages: 2

M@xu3L

XLDnaute Junior
Bonjour M@xu3L,
Dans votre PJ il y a des "blocs" qui font 14 colonnes pour une date, d'autres qui font 15 colonnes.
J'ai tout homogénéiser à 15 colonnes, ce qui simplifie grandement les formules.
On obtient la synthèse avec :
VB:
Date:
=SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE()-1);"")
Valeur:
=SIERREUR(INDEX(test!$27:$27;EQUIV(A2;test!$1:$1;0)+10);"")
Merci Sylvanu de ta réponse aussi rapide le souci est que justement je travail sur un fichier qui est déjà rempli avec ces problème de "blocs" comme tu dit... Dans le fichier original les "Blocs" on les cellules fusionné avec la date inscrite dedans mais d'autres chose comme par exemple " charge du 14/11/2023" et qui change entre chaque "blocs". Je ne vais pas pouvoir retravailler tous le tableau car ici ce n'est qu'un exemple mais j'ai un nombre de colonne impressionnant lol ^^. Si tu as une idée je suis preneur sinon je pense reconstruire un tableau afin de repartir sur de bonne base avec ta petite formule.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Un autre essai mais plus "risqué" avec la même chose pour la date mais pour Valeur :
VB:
=SIERREUR(SOMME(DECALER(test!$A$27:$O$27;0;EQUIV(A2;test!$1:$1;0)));"")
"Risqué" car on prend une plage de 15 colonnes qu'on décale en fonction de la date, en espérant qu'il n'y ait pas deux valeurs sur 15 colonnes.
 

Pièces jointes

  • test forum (6).xlsx
    125.2 KB · Affichages: 3

M@xu3L

XLDnaute Junior
Un autre essai mais plus "risqué" avec la même chose pour la date mais pour Valeur :
VB:
=SIERREUR(SOMME(DECALER(test!$A$27:$O$27;0;EQUIV(A2;test!$1:$1;0)));"")
"Risqué" car on prend une plage de 15 colonnes qu'on décale en fonction de la date, en espérant qu'il n'y ait pas deux valeurs sur 15 colonnes.
Je suis désolé mais je ne comprend pas cela ne fonctionne pas pour la date sur mon tableau...sa ne me met rien du tout. j'ai pas une erreur rien mais une case vide... je comprend pas ^^
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Avec votre PJ j'obtiens ça sur la feuille Synthèse :
1700033779895.png

cela ne fonctionne pas pour la date sur mon tableau
De quel tableau parlez vous ? Sur quel fichier ?
Si c'est un autre fichier, fournissez le sinon on n'avancera pas.
 

M@xu3L

XLDnaute Junior
Bonjour,
Avec votre PJ j'obtiens ça sur la feuille Synthèse :
Regarde la pièce jointe 1183759

De quel tableau parlez vous ? Sur quel fichier ?
Si c'est un autre fichier, fournissez le sinon on n'avancera
C'est le même que je vous ai transmit mais avec mes informations dedans.
Et lorsque je créer un onglet synthèse avec votre formule pour la date sa ne fonctionne pas je ne sais pas pk... Bien sur le nom de l'onglet est différent que test et je l'ai changé...
 

M@xu3L

XLDnaute Junior
Avec ma formule mise à jour ?
Pas avec la formule in extenso qui contient test ?
Votre formule contient bien la feuille d'origine ? Elle fait bien référence aux lignes 1 et 27 ?
oui oui en gros je vous ai transmit la feuille vierge avec juste les dates dessus mais sinon la feuille est bien la même et je ne comprend pas pk sa ne fonctionne pas d'autant plus que sur votre fichier que vous m'avez envoyer sa fonctionne mais lorsque je copie votre formule sa ne fonctionne pas...
Je te joint ton fichier avec mes chiffres car la fonctionne mais du coup je suis désolé je n'avais pas vu qu'il y a une somme de faite dans ta formule et j'ai d'autres chiffres qui viennent dans cette ligne et donc sa ne me recherche pas seulement la valeur mais sa me calcul la somme de toutes les valeurs présente...
 

Pièces jointes

  • test forum (6).xlsx
    122.6 KB · Affichages: 1

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si votre PJ n'est pas représentative, il est difficile de l'imaginer. Dans votre PJ en ligne 27 il n'y avait qu'un nombre par bloc en ligne 27. D'où ma solution avec une somme.
En Pj une autre approche, on recherche Date x puis on prend la valeur en ligne 27 de la colonne précédente.
Mais cela suppose que pour le dernier bloc il y ait une Date x dans le bloc suivant.
Par ex dans votre PJ cela s'arrête à la "Date 6", il doit y avoir "Date 7" dans le bloc suivant pour faire le calcul de la dernière valeur, avec :
VB:
=SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE();test!$1:$1;0)-1);"")
 

Pièces jointes

  • test forum (6) (2).xlsx
    130.3 KB · Affichages: 2

M@xu3L

XLDnaute Junior
Si votre PJ n'est pas représentative, il est difficile de l'imaginer. Dans votre PJ en ligne 27 il n'y avait qu'un nombre par bloc en ligne 27. D'où ma solution avec une somme.
En Pj une autre approche, on recherche Date x puis on prend la valeur en ligne 27 de la colonne précédente.
Mais cela suppose que pour le dernier bloc il y ait une Date x dans le bloc suivant.
Par ex dans votre PJ cela s'arrête à la "Date 6", il doit y avoir "Date 7" dans le bloc suivant pour faire le calcul de la dernière valeur, avec :
VB:
=SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE();test!$1:$1;0)-1);"")
Oui je m'en excuse c'est une erreur de ma part je n'avait pas pensé à mettre toutes les données comme je vient de le faire. Donc ici le problème est la dernière donnée que je vais avoir besoin dans ce résumé il existe une solution?

Et je revient sur mon post précédent cela fonctionne mais du coup il faut que je parte de la cellule A1 et sa vous ne me laviez pas dit lol moi je partais de la cellule A2... une solution ou je peu partir de la cellule A2??
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
il faut que je parte de la cellule A1 et sa vous ne me laviez pas dit lol moi je partais de la cellule A2
De quelle cellule A2 vous parlez ? Dans la feuille Synthèse ?


Si vous partez de A2 les formules sont bonnes.
Si vous partez de A1 il faut recalculer correctement le N° de ligne avec :
VB:
au lieu de :
=SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE()-1);"")
mettre
=SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE());"")

au lieu de
=SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE();test!$1:$1;0)-1);"")
mettre
=SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE()+1;test!$1:$1;0)-1);"")
A tester.
 

M@xu3L

XLDnaute Junior
De quelle cellule A2 vous parlez ? Dans la feuille Synthèse ?


Si vous partez de A2 les formules sont bonnes.
Si vous partez de A1 il faut recalculer correctement le N° de ligne avec :
VB:
au lieu de :
=SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE()-1);"")
mettre
=SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE());"")

au lieu de
=SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE();test!$1:$1;0)-1);"")
mettre
=SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE()+1;test!$1:$1;0)-1);"")
A tester.
oui dans la feuille synthèse j'aurai voulu que la date apparaissent en ligne 3 pas en ligne 2 comme pour vous. Par contre la ligne pour les valeur ne fonctionne pas et j'ai changer la ligne pour les date j'ai mit:
VB:
=SIERREUR(PETITE.VALEUR('mononglet  '!$1:$1;LIGNE()-2);"")
Et la sa fonctionne comme je le souhaite ^^ Par contre pour les valeurs sa ne fonctionne pas...
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Pour "retomber sur ses pieds", il faut évaluer ce que vaut "ligne()" et ce que doit valoir la valeur désirée.
Ligne 3, Date : la première valeur à chercher est 1 et Ligne() vaut 3 donc Ligne()-2
Valeur : la première valeur à chercher est "Date 2" et Ligne() vaut 3 donc Ligne()-1
VB:
Date   : =SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE()-2);"")
valeur : =SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE()-1;test!$1:$1;0)-1);"")
Voir PJ.
 

Pièces jointes

  • test forum (6) (2) (2).xlsx
    130.2 KB · Affichages: 5

M@xu3L

XLDnaute Junior
Pour "retomber sur ses pieds", il faut évaluer ce que vaut "ligne()" et ce que doit valoir la valeur désirée.
Ligne 3, Date : la première valeur à chercher est 1 et Ligne() vaut 3 donc Ligne()-2
Valeur : la première valeur à chercher est "Date 2" et Ligne() vaut 3 donc Ligne()-1
VB:
Date   : =SIERREUR(PETITE.VALEUR(test!$1:$1;LIGNE()-2);"")
valeur : =SIERREUR(INDEX(test!$27:$27;EQUIV("Date "&LIGNE()-1;test!$1:$1;0)-1);"")
Voir PJ.
Alors je comprend parfaitement mais par contre je ne comprend pas pourquoi sa ne fonctionne pas sur mon fichier... sa fonctionne très bien sur ton fichier moi sa me met une case vide.

Ta formule doit bien s'écrire comme ceci ou il y a des chose a changer encore :
VB:
=SIERREUR(INDEX("nom d'onglet"!$27:$27;EQUIV("Date "&LIGNE()-1;"nom onglet"!$1:$1;0)-1);"")
et a la place de "nom d'onglet" je met le nom de mon onglet...
 

Discussions similaires

Réponses
4
Affichages
513

Statistiques des forums

Discussions
314 708
Messages
2 112 097
Membres
111 416
dernier inscrit
philipperoy83