Détail inconsidéré dans la formule fournie

Bonjour à tous,

Amadeus m'a fourni une formule au mois d'août dernier. La formule fonctionnait très bien jusqu'à ce que je rencontre le problème suivant :

La formule fournit les dates de naissance des joueurs une semaine à l'avant. Tout va bien jusqu'à ce que deux joueurs ou plus, ont la même date de naissance dans la même semaine. La formule ne reconnait qu'un seul joueur et inscrit son nom dans tous les espaces réservés à cette fin.

J'aimerais pouvoir modifier la formule afin qu'elle reconnaisse tous les joueurs qui ont la même date de naissance, et inscrive leur nom respectif dans les espaces réservés à cette fin.

Merci beaucoup pour votre aide.

26classeur1v1.xlsm (136.80 Ko)

Bonjour Golfeur

bonjour Amadeus

@ Amadeus : tu vas râler, mais je vais donner mon opinion

@ Golfeur : ton fichier a été téléchargé 20 fois (21 avec la mienne). Et pas de réponse.

Mon avis : tu veux faire une base de donnée relationnelle avec VBA (et un petit peu Excel). Tu es en train de constater que ni Excel ni VBA ne sont conçus pour ça

ici tu te heurtes à une liaison n-n

tu te rends compte que chaque évolution de ton appli te pose des problèmes qui croissent exponentiellement. Au début, tu passes 1 h sur un problème, 10 jours plus tard, pour un problème similaire tu passes 1 jour ! à cause des interactions entre macros/formules/feuilles.

Mon conseil : passe à un vrai SGBD : Access par exemple

mais ce n'est que mon avis personnel

amitiés excelliennes à tous et bonne journée

Bonjour jmd,

Merci pour avoir pris la peine de regarder mon fichier et d'émettre ton opinion.

Pour être franc, je ne sais pas quoi dire. Je ne connais pas Access et n'ai jamais travaillé avec ce système.

Ne pouvant communiquer avec Amadeus en privé, j'espérais qu'il regarde le fichier, étant celui qui a fourni la formule du début.

Mon problème est que je n'ai pas les connaissances et surtout l'imagination créatives que vous les intervenants du Forum avez tous en commun. J'ai beau essayer de créer une formule en combinant certaines fonctions entres elles, comme vous le faites, je n'arrive pas au résultat escompté. Idem pour les VBA. Comme d'en n'importe lequel des domaines, il y a des personnes plus talentueuses que d'autres, plus imaginatives, et c'est ce qui se passe avec vous en Excel.

Crois moi si je te dis que j'essaie de toutes les manières de trouver des solutions avant de présenter mon fichier au Forum.

Encore une fois merci et bonne journée.

Bonsoir à tous !

Je fais parti des ceux qui ont téléchargé le fichier car j'avais une idée que je n'ai pas su mettre en place...

Cette idée vient d'une demande que j'avais faite au moi de mai, le fichier est ci dessous :

INDEX($A$1:$A$17;EQUIV(GRANDE.VALEUR($B$1:$B$17-LIGNE($B$1:$B$17)/10^10;{1;2;3;4;5});B1:B17-LIGNE(B1:B17)/10^10;0))

Le principe pour la réponse à ma demande de l'époque était de retirer une infime partie (surlignage) des valeurs numérique en fonction du numéro de ligne Excel où se trouve cette valeur, ainsi le dix en ligne 1 d'Excel était légèrement plus grand que le dix en ligne 12, ce qui a pour effet de permettre de "sortir" les deux valeurs correspondante de la colonne A, car sinon seul la valeur de la ligne 1 était retournée.

Dans votre cas il suffirait de rajouter des secondes aux date afin que le 09/10/1980 à 00h01 est plus petit que le 09/10/1980 à 00h02 !

Ensuite au niveau de la recherche la fourchette serait le 09/10/1980 à 00h00 et 6 jours plus tard pour la semaine de "visu" au 15/10/1980 à 23h59 ou pour plus de précision strictement inférieur au 16/10/1980 à 00h00.

Peut-être que Maréchal... Bonsoir MFerrand, comment allez-vous ?

@ bientôt

LouReeD

golfeur01 !

Bonne nouvelle !

Le fichier joint :

vous fait ce que vous voulez, mais il va vous falloir faire des "adaptations" voir même des suppressions de formules d'Amadeus.

En effet cette formule utilise la fonction recherche à partir du nom de la personne pour trouver la date d'anniversaire, hors Amadeus a fait l'inverse...

Mais sur le fichier cela fonctionne, il faudra juste ajouter une gestion d'erreur pour ne pas voir le message dans la cellule en cas de date non trouvée.

Pour finir, c'est bien le principe d'ajouter des "heures et minutes" à la date qui permet de faire le distinguo entre deux date identique.

@ bientôt

LouReeD

Bonjour LouReeD,

Merci beaucoup pour l'intérêt que tu portes à mon problème.

J'ai adapté ta formule à mon fichier et tout devrait fonctionner parfaitement sauf que je n'ai aucune idée comment faire pour que la formule matricielle couvre les 4 lignes en même temps (mon fichier n'en contient que 4) comme elle le fait dans ton fichier "Extraction des dates de naissance", 5 lignes).

Si je copie/colle la formule matricielle de la ligne CI215 au lignes CI217, CI219, CI221, je n'obtiens pas le même résultat que toi.

Mes connaissances en formule matricielle sont nulles.

Comment faire pour que la formule matricielle s'applique aux 4 lignes comme elle le fait dans ton fichier "Extraction des dates de naissances", 5 lignes) ?

Merci et bonne journée.

3classeur1v1.xlsm (137.58 Ko)

Bonsoir,

C'est simple, dans la formule :

{=INDEX('Informations personnelles'!$C$3:$C$1003;EQUIV(PETITE.VALEUR(SI((ESTNUM('Informations personnelles'!$I$3:$I$1003))*('Informations personnelles'!$I$3:$I$1003>=_1)*('Informations personnelles'!$I3:$I1003<=_2);'Informations personnelles'!$I$3:$I$1003+LIGNE('Informations personnelles'!$I$3:$I$1003)/10^10); {1;2;3;4} );'Informations personnelles'!I3:I1003+LIGNE('Informations personnelles'!I3:I1003)/10^10;0))}

remplacez la partie surlignée avec un 1 pour la première formule, un 2 pour la deuxième, un 3 pour la troisième et un 4 pour la quatrième.

Bien évidemment, pour valider chaque formule il faut le faire en matriciel ! [Shift]+[Ctrl]+[Entrée]

Voilà, l'écriture d'origine est faite pour des cellules contigüe, je crois.

Ceci dite on doit indiquer à PETITE.VALEUR le rang de la valeur à "renvoyer", donc dans l'ordre on a bien le 1 puis le 2, puis le 3 et enfin le 4. Ce qui donne :

{=INDEX('Informations personnelles'!$C$3:$C$1003;EQUIV(PETITE.VALEUR(SI((ESTNUM('Informations personnelles'!$I$3:$I$1003))*('Informations personnelles'!$I$3:$I$1003>=_1)*('Informations personnelles'!$I3:$I1003<=_2);'Informations personnelles'!$I$3:$I$1003+LIGNE('Informations personnelles'!$I$3:$I$1003)/10^10); 1 );'Informations personnelles'!I3:I1003+LIGNE('Informations personnelles'!I3:I1003)/10^10;0))}

Voilà, c'est simple, non ?

@ bientôt

LouReeD

Bonjour LouReeD,

Super. Tout fonctionne parfaitement. Tu es un génie.

Mon système principal contient 34 semaines de jeu.

J'ai modifié quelque peut la formule afin de l'adapter à mon système principal qui me donne une source fixe pour la date de début de chaque semaine. J'ai changé les _1 et _2 par la cellule source $CE$175 et par le fait même $CE$175+6 pour la fin (Voir pièce jointe). Ce qui m'évite, je crois, de nommer la source de chaque semaine par _1 et _2 pour la Sem.01, _3 et _4 pour la Sem.02....etc....etc...,

Je ferme le dossier, mais si tu veux commenter sur mes changements, envoie moi un message privé.

{=SIERREUR(INDEX('Informations personnelles'!$C$3:$C$1003;EQUIV(PETITE.VALEUR(SI((ESTNUM('Informations personnelles'!$I$3:$I$1003))*('Informations personnelles'!$I$3:$I$1003>=$CE$175)*('Informations personnelles'!$I3:$I1003<=$CE$175+6);'Informations personnelles'!$I$3:$I$1003+LIGNE('Informations personnelles'!$I$3:$I$1003)/10^10);1);'Informations personnelles'!I3:I1003+LIGNE('Informations personnelles'!I3:I1003)/10^10;0));"")}

Je ne te remercierai jamais assez. Tu viens de m'enlever une grosse épine du pied.

5classeur1v1.xlsm (138.54 Ko)

Très bien c'est cela qu'il fallait faire, comme ceci la , les formules fonctionnent sur toutes les feuilles !

Merci de votre merci !

Et tout ceci avec 24 téléchargements du fichier !

@ bientôt

LouReeD

Rechercher des sujets similaires à "detail inconsidere formule fournie"