Recherche sur période renvoie #N/V

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
melificae
Fraîchement OOthentifié
Messages : 4
Inscription : 23 mai 2010 12:46

Recherche sur période renvoie #N/V

Message par melificae »

Le modérateur a écrit : :alerte: Le titre de votre question n'est pas assez explicite ou ne reflète pas le problème que vous décrivez :
<probleme fonction recherche + date>
Des termes comme "problème" ou "openoffice" sont bien sûr implicites et n'ont pas besoin d'être mentionnés.

Merci de faire un effort sur le titre de votre question la prochaine fois. N'oubliez pas qu'un titre clair et précis augmente vos chances d'obtenir des réponses plus rapidement.
bonjour a tous

j'ai un probleme avec la fonction rechercher depuis ce matin.
je m'explique: j'ai créer un tableau avec différentes dates a savoir par exemple :

j'entre la date : 10/05/2010 dans une case dans les 4 colones qui précede j'ai créé une formule qui calcul les 4 date qui precede la date entrée ca donne automatiquement :

06/05/2010 07/05/2010 08/05/2010 09/05/2010 10/05/2010

j'ai répété cela quatres fois de suite ce qui donne 20 collones avec des dates dedan

dans la 21eme collone je souhaite créer une formule qui me ressort la date d'aujourd'hui si elle est présente dans la ligne et qui ne sort rien si la date du jours n'est pas présente.

j'ai essayé avec la fonction rechercher mais je n'y arrive pas elle ressort systématiquement #n/v si la date d'aujourd'hui n'est pas présente dans les 5 premiere collones.

pouvez vous m'aider svp ca fait 5 h que je me casse la tete la desus

merci d'avance
ooo 3.1.1 sur fedora 12
Pierre-Yves Samyn
Grand Maître de l'OOffice
Grand Maître de l'OOffice
Messages : 11276
Inscription : 02 mai 2006 08:42

Re: probleme fonction recherche + date

Message par Pierre-Yves Samyn »

Bonjour et bienvenue sur ce forum

En se limitant à la question posée :
Capture-1.png

Code : Tout sélectionner

=SI(SOMMEPROD(A1:D1=AUJOURDHUI())=1;AUJOURDHUI();"")
Après... il faudrait voir ton classeur (ta méthode de calcul et le format des dates)
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Avatar de l’utilisateur
Michel JANZEF
ManitOOu
ManitOOu
Messages : 3581
Inscription : 12 janv. 2006 10:04

Re: probleme fonction recherche + date

Message par Michel JANZEF »

Bonjour

Avec la fonction RECHERCHE, j'ai également fait ceci :

Code : Tout sélectionner

=SI(RECHERCHE(AUJOURDHUI();A1:T1)=AUJOURDHUI();AUJOURDHUI();"")
AOo 4.1.16 (Oracle JRE x86 - 1.8.0_471) et LibO 25.8.6.2 (Oracle JRE x64 - 1.8.0_471) - Windows 11 Famille 25H2 (26200.6725) 64 bits
melificae
Fraîchement OOthentifié
Messages : 4
Inscription : 23 mai 2010 12:46

Re: probleme fonction recherche + date

Message par melificae »

Pierre-Yves Samyn a écrit :Bonjour et bienvenue sur ce forum

En se limitant à la question posée :
Capture-1.png

Code : Tout sélectionner

=SI(SOMMEPROD(A1:D1=AUJOURDHUI())=1;AUJOURDHUI();"")
Après... il faudrait voir ton classeur (ta méthode de calcul et le format des dates)
bonjour pierre-yves

ta formule semble fonctionner

merci beaucoup


tu me sauve la vie
ooo 3.1.1 sur fedora 12
melificae
Fraîchement OOthentifié
Messages : 4
Inscription : 23 mai 2010 12:46

Re: probleme fonction recherche + date

Message par melificae »

Michel JANZEF a écrit :Bonjour

Avec la fonction RECHERCHE, j'ai également fait ceci :

Code : Tout sélectionner

=SI(RECHERCHE(AUJOURDHUI();A1:T1)=AUJOURDHUI();AUJOURDHUI();"")
cette formule ne fonctionne pas parcontre elle renvoi #n/d si on met une date supérieur a la date du jours dans le tableau
ooo 3.1.1 sur fedora 12
Avatar de l’utilisateur
OOotremer971
ManitOOu
ManitOOu
Messages : 2791
Inscription : 16 avr. 2010 13:31

Re: probleme fonction recherche + date

Message par OOotremer971 »

Bonsoir melificae,

Les fonctions de recherches (RECERCHE() RECHERCHEV() ou RECHERCHEH()) retournent #N/D ou #N/A lorsqu'elles ne trouvent pas la valeur recherchée ou lorsqu'elles ne trouvent aucunes valeurs. Je crois qu'il faut donc traiter, en premier, ce que retournent ces fonctions, si, on ne souhaite pas voir ce qu'elles retournent lorsqu'elles ne trouvent rien (càd #N/D ou #N/A). La fonction ESTERREUR() renvoie VRAI si la valeur retournée est une erreur ; c'est le cas pour #N/D et #N/A. Dans ton exemple, si j'ai bien compris, tu souhaites afficher la date du jour si elle est présente dans la plage concernée, ou rien le cas échéant.

La fonction de recherche renvoie une erreur si elle ne trouve rien.
La fonction ESTERREUR renvoie VRAI (donc 1) en cas d'erreur.
La fonction SI() analyse si une expression ou une valeur renvoie VRAI, et retourne ce que l'on souhaite(X) si c'est VRAI et ce que l'on souhaite(Y) si c'est FAUX

Dans ton exemple, ce qui te dérange, c'est que la fonction de recherche renvoie une erreur (#N/D) lorsqu'elle ne trouve rien, alors que tu souhaites obtenir une cellule vide dans ce cas.

Si tu poses la condition suivante :

Si la fonction de recherche retourne une erreur alors il ne faut rien afficher, et si elle trouve ce que je recherche, alors qu'elle affiche ce que je recherche. En langage OOo ça s'exprime ainsi.

Code : Tout sélectionner

=SI(ESTERREUR(RECHERCHE(E1;A1:A20)=1);"";RECHERCHE(E1;A1:A20))
.

Mon objectf n'est pas de donner une solution (dans ce cas précis) mais d'aider à comprendre comment raisonner pour en trouver une. Losque tu te trouves dans l'assitant fonction, et qu'une fonction est sélectionnée, un clic sur le bouton aide donne une mine d'informations sur cete fonction. Moi c'est comme ça que j'apprends.

Bonne journée
Gabriel.
En principe, toujours à jour des dernières versions dites stables
AOO
LibreOffice
Debian GNU/Linux 12 (bookworm)
melificae
Fraîchement OOthentifié
Messages : 4
Inscription : 23 mai 2010 12:46

Re: probleme fonction recherche + date

Message par melificae »

Le modérateur a écrit : :alerte: Évitez de citer l'ensemble du message précédent, cela rend la lecture très difficile.
OOotremer971 a écrit :Bonsoir melificae,

Les fonctions de recherches (RECERCHE() RECHERCHEV() ou RECHERCHEH()) retournent #N/D ou #N/A lorsqu'elles ne trouvent pas la valeur recherchée ou lorsqu'elles ne trouvent aucunes valeurs. Je crois qu'il faut donc traiter, en premier, ce que retournent ces fonctions, si, on ne souhaite pas voir ce qu'elles retournent lorsqu'elles ne trouvent rien (càd #N/D ou #N/A). La fonction ESTERREUR() renvoie VRAI si la valeur retournée est une erreur ; c'est le cas pour #N/D et #N/A. Dans ton exemple, si j'ai bien compris, tu souhaites afficher la date du jour si elle est présente dans la plage concernée, ou rien le cas échéant.

La fonction de recherche renvoie une erreur si elle ne trouve rien.
La fonction ESTERREUR renvoie VRAI (donc 1) en cas d'erreur.
La fonction SI() analyse si une expression ou une valeur renvoie VRAI, et retourne ce que l'on souhaite(X) si c'est VRAI et ce que l'on souhaite(Y) si c'est FAUX

Dans ton exemple, ce qui te dérange, c'est que la fonction de recherche renvoie une erreur (#N/D) lorsqu'elle ne trouve rien, alors que tu souhaites obtenir une cellule vide dans ce cas.

Si tu poses la condition suivante :

Si la fonction de recherche retourne une erreur alors il ne faut rien afficher, et si elle trouve ce que je recherche, alors qu'elle affiche ce que je recherche. En langage OOo ça s'exprime ainsi.

Code : Tout sélectionner

=SI(ESTERREUR(RECHERCHE(E1;A1:A20)=1);"";RECHERCHE(E1;A1:A20))
.

Mon objectf n'est pas de donner une solution (dans ce cas précis) mais d'aider à comprendre comment raisonner pour en trouver une. Losque tu te trouves dans l'assitant fonction, et qu'une fonction est sélectionnée, un clic sur le bouton aide donne une mine d'informations sur cete fonction. Moi c'est comme ça que j'apprends.

Bonne journée
Gabriel.
salut gabriel,

merci pour ta longue réponse mais il y a surement un bug qqpart, car la fonction recherche renvoie une erreur alors que la date du jours est bien présente dans la plage de donnée, en partant de gauche a droite si la date est présente dans les 4 premieres cellules elle renvoi la réponse demandé, si dans ces quatres cellule les dates présente sont supérieur a la date du jours la fonction recherche renvoi #n/d meme si la date du jours est présente dans les cellules suivantes.
je ne pouvais donc pas utiliser le fait qu'elle renvoi une erreur comme réponse fausse.

mais la fonction sommeprod de Pierre-Yves Samyn fonctionne parfaitement. j'ai donc pu faire ce que je souhaitais.

j'aurai quand meme bien voulu connaitre l'origine du bug pour une éventuelle prochaine fois.

cordialement

jean baptiste galerme
ooo 3.1.1 sur fedora 12
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12838
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: probleme fonction recherche + date

Message par Bidouille »

Bonjour,
melificae a écrit :j'aurai quand meme bien voulu connaitre l'origine du bogue pour une éventuelle prochaine fois.
Peut être que si vous fournissiez un fichier avec votre formule comme il vous a été réclamé, cela pourrait être testé.

Néanmoins, je vois ceci :
ooo 3.1.1 sur fedora 12
Outre le fait que ce n'est pas la dernière version, on rappelle que le OOo des dépôts n'est pas l'officiel.
Avatar de l’utilisateur
Jean-Louis Cadeillan
GourOOu
GourOOu
Messages : 6090
Inscription : 02 janv. 2009 23:56

Re: Recherche sur période renvoie #N/V

Message par Jean-Louis Cadeillan »

Bonjour à tous,
melificae a écrit :la fonction recherche renvoie une erreur alors que la date du jour est bien présente dans la plage de donnée
Aide de Calc a écrit :le vecteur de recherche pour RECHERCHE doit être trié en ordre croissant, sinon la recherche ne renvoie aucun résultat exploitable.
On peut faire une petite exploration de la vie et des mœurs de la fonction RECHERCHE()...
Par exemple si en A1 on a :

Code : Tout sélectionner

=RECHERCHE(3;$B$1:$E$1)
Si en B1:E1 , on a :
a) 3,2,1,4 alors RECHERCHE() retourne 3
b) 4,1,2,3 alors RECHERCHE() retourne #N/D
c) 1,4,2,3 alors RECHERCHE() retourne 1
d) 1,2,3,4 alors RECHERCHE() retourne 3
e) 1,2,4,5 alors RECHERCHE() retourne 2

La fonctions RECHERCHE() cherche en aveugle, sans anticipation. Elle pense que la suite des valeurs est classée par ordre croissant (chiffres avant lettres, d'ailleurs). Elle retourne la plus petite valeur inférieure ou égale à la valeur cherchée.
a) RECHERCHE() lit la première valeur, c'est la bonne, elle s'arrête et retourne 3.
b) RECHERCHE() lit la première valeur, elle est supérieure à la valeur cherchée, comme elle croit que la suite des valeurs est classée par ordre croissant, c'est inutile de chercher plus loin, elle retourne donc #N/D (non déterminé).
c) RECHERCHE() lit la première valeur, 1, elle est inférieure à la valeur cherchée, donc elle lit la seconde, 4, qui est supérieure à 3, comme elle croit que la suite des valeurs est classée par ordre croissant, c'est inutile de chercher plus loin,elle retourne donc la plus petite valeur rencontrée inférieure ou égale à 3, c'est-à-dire 1.
d) RECHERCHE() lit la première valeur, 1, elle est inférieure à la valeur cherchée, donc elle lit la seconde, 2, qui est inférieure à la valeur cherchée, donc elle lit la troisième, 3, c'est la bonne, elle s'arrête et retourne 3.
e) RECHERCHE() lit la première valeur, 1, elle est inférieure à la valeur cherchée, donc elle lit la seconde, 2, qui est inférieure à la valeur cherchée, donc elle lit la troisième, 4, qui est supérieure à 3, comme elle croit que la suite des valeurs est classée par ordre croissant, c'est inutile de chercher plus loin, elle retourne donc la plus petite valeur rencontrée inférieure ou égale à 3, c'est-à-dire 2.

En pratique, seul le contexte d) est utilisable...
Cordialement
Jean-Louis
Windows 10 Pro 64, LibO 25.8.6.2 (JRE 1.8.0_481) et AOO 4.1.16 (Adoptium 19.0.2.7)