SI seulement mois/année
J'ai réussi avec "TODAY" (et ouai j'ai mon Excel en US).
Cependant je viens de voir un truc pour le "dateOK". Ce module est dépendant du format de la cellule non? Car si je suis obligé de choisir le format de la cellule à chaque fois c'est pas top...
Ou alors j'ai mal saisie comment elle fonctionnait.
J'explique comment j'ai fait:
J'ai pris ton code, j'ai créer un nouveau module dans mon classeur, je l'y ai inséré.
J'ai inséré mon "dateOK" dans ma formule.
Si je met un format jj/mm/aaaa si je n'entre pas le jour il me prendra par défaut le premier du mois et donc du coup le dateOK m'affiche "A venir" alors que je n'ai pas rentré de jour.
En revanche si je prend un format mm/aaaa et bien quand je renseignerai le jour il ne me le prendra pas en compte et le dateOK m'affichera A venir (non précisé)...
Problématique non?
Sinon je pensais à une autre solution. Peut-on compter le nombre de "/" dans une cellule via une formule?
Par exemple "SI il y a 2 "/" dans telle cas alors A venir (car le jour y sera renseigné forcément et si 1 "/" alors A venir (non précisé)".
L'une ou l'autre me convient du moment que j'arrive à mes fins, merci déjà pour le "AUJOURDHUI" c'est très pratique
Bonjour,
ce que j'avais écrit :
un essai par fonction personnalisée.
Dépend fortement du format d'affichage bien entendu.
Tu ne connais pas du tout le fonctionnement d'excel et ça serait un peu long de t'expliquer.
En gros si ta saisie ressemble à une date, excel la convertit en date numérique, et ce n'est qu'un nombre comme 46143. Tu ne peux plus tester les éventuels /
Si tu ne fais que des saisies en texte tu peux effectivement compter les /, et là tu as eu des propositions par formules simples.
Mais ce n'est plus une date pour excel, et certaines opérations deviendront difficiles, voire impossibles. Tu ne pourras plus trier correctement par exemple
eric
J'ai relu qu'après mais effectivement, j'avais perdu le fil de la discussions
C'est très embêtant car si je le transforme en texte je ne peux plus me servir de "AUJOURDHUI" dans mes formules et si je le laisse en date je suis obligé de changer le format de mes cellules manuellement...
N'est-il pas possible de créer un format qui fasse jj/mm/aaaa si on rentre les jours/mois/année ou mm/aaaa si on ne rentre que le mois/année?... (les deux en un seul format)
Sinon j'ai test une chose mais ça n'a pas l'air de fonctionner... remplacer le jour de la date que je ne connais pas encore par des "?" et mettre au final une chose de ce genre ??/10/2014 mais le dateOK ne me le prend plus comme une date.
Que ma formule ne me le prenne plus comme une date peut importe puisque le AUUJOURDHUI fonctionne que si je lui donne un jour spécifique à comparer mais si le dateOK pouvait dire que si la "date" contient des "?" alors "A venir (non précisé)" et si c'est une date complète alors "A venir".
J’essaie de feinter la chose pour parvenir à mes fins mais je n'ai pas les compétences nécessaires, c'est assez ennuyeux.
N'y aurait-il pas une possibilité similaire à ce que j'ai décris au dessus?
Merci de ta patience!
C'est très embêtant car si je le transforme en texte je ne peux plus me servir de "AUJOURDHUI" dans mes formules
Si, tu peux en forçant excel à convertir en date numérique avec *1
Mais du coup tu es obligé de tester avant si c'est une date convertible ou pas, ça rallonge d'autant tes formules.
Et vouloir faire un mix entre vba et formule ne simplifie pas forcément, tout au moins pour la réflexion et les choix de qui doit faire quoi.
Donc fait un choix. Tout par formule, ou accepter vba en te penchant un peu dessus si tu dois adapter, mais lui faire faire le maximum. Pas la peine d'en avoir peur, ça s'apprend par petits bouts au fur et à mesure des besoins.
Pour ce qui est des formats dates, si tu es en Standard c'est excel qui choisi et met le format date qui lui parait le plus approprié en fonction de la saisie. Donc si tu saisis mois/année il mettra celui là, et tu devras le changer lorsque tu saisiras 12/10/14. Pas le choix.
J'ai modifié un peu la fonction qu'elle soit plus proche de ton besoin (avec ce que j'ai compris).
J'ai ajouté des commentaires dans le code que tu comprennes la logique.
Ci-joint un tableau récapitulatif de ce que tu peux faire avec, et par formule (là j'ai fait le minimum, il faudra que tu complètes, c'est juste pour le principe).
Pour faire ton choix de solution sache que la fonction personnalisée doit être volatile. C'est à dire qu'elle est recalculée systématiquement sur n'importe quelle saisie. Si tu l'utilises 100000 fois, elle est recalculée 100000 fois à chaque saisie et influence donc la réactivité de la feuille...
eric
Je penche plus pour le "Texte par formule".
Cependant il y a la moitié des choses dans la formule que j'ai pascompris, jusqu'à maintenant je ne faisait que des formules assez simples et donc je rentre en terrain inconnu (mais toujours moins que pour le VBA ou je n'y connais rien du tout).
Je sais que c'est pas très poli de demander ça, mais pourrais tu simplement me faire ma formule? J'hésite à te demander de m'expliquer petit à petit comment elle fonctionne car tu vas surement me renvoyer sur l'aide Excel et je vais surement ne rien comprendre en lisant tout le charabia...
Si je comprend totalement la formule je pourrai la remanier au besoin car j'ai quand même des bases la dessus.
Je t'explique ce que je voudrais faire en phrase + un fichier excel donc si tu veux me faire carrément la formule c'est top et si tu veux bien m'expliquer (EN PV?) comment faire pas à pas c'est encore plus top! Le VBA on abandonne (désolé de t'avoir fais réfléchir pour rien
J'aimerai:
En H6 de ma feuille Sommaire, SI Prévisions!D6 (donc la cellule D6 de ma feuille "Prévisions") = Terminée alors "Terminée", SI Prévisions!D6 = Terminé alors "Terminé",SI Prévisions!D6 = En pause alors "En pause", SI Prévisions!D6 = Abandonné alors "Abandonné", SI Prévisions!D6 >= AUJOURDHUI et qu'il comporte un seul "/" alors "A venir non précisé", SI Prévisions!D6 >= AUJOURDHUI et qu'il comporte deux "/" alors "A venir", SI Prévisions!D6 <= AUJOURDHUI alors "En cours", SI Prévisions!E6 <= AUJOURDHUI et que les cellules B6 et D6 sont vides alors "Terminé", SI Prévisions!E6 <= AUJOURDHUI et que la cellule B6 > 0 alors "Terminée".
Comme tu peux le voir il y a deux fois "Terminée" et "Terminé" car les anciennes séries qui sont déjà Terminée je ne vais pas m'amuser à chercher toutes les dates de fins, je le ferai que sur les séries que je vais rajouter par la suite donc pour les anciennes je rentrerai directement "Terminée" (ce que j'ai déjà fait avant).
Ça c'est l'intégralité de ma formule, je n'ai rien à rajouter dessus (pour le moment), j'y ai bien réfléchi. Donc si tu peux m'expliquer pas à pas la formule ça serait top mais si tu souhaite le faire ou alors me laisser me débrouiller avec ce que tu m'a donné je ferai avec mais en tout cas encore merci pour le temps que tu as passé à me répondre!
Non, je ne vais pas te la faire. Si tu veux pouvoir adapter il faut savoir la faire.
D'autant plus que ta demande change à chaque post donc ça sera toujours faux.
Avec un peu de méthode tu vas y arriver :
démarre avec un seul test :
=si(test1=0;"réponse1";"réponse2")Tu vois que réponse2 doit avoir 2 possibilités. Tu te mets dans une autre cellule pour la préparer et la tester :
=si(test2=0;"réponse3";C2)Quand elle est au point tu remplaces réponse2 par la nouvelle formule pour obtenir :
=si(test1=0;"réponse1";si(test2=0;"réponse3";C2))etc
Et si ta formule devient trop longue ou trop compliquée, ne pas hésiter à utiliser des colonnes intermédiaires (que tu peux masquer) et une dernière qui fait la synthèse pour garder une lisibilité correcte et permettre une évolution facile.
Même avec 10 ans d'ancienneté sur excel je fais régulièrement comme ça. La seule différence c'est qu'avec l'expérience je le ferai un peu plus tard que toi. Seuls les mutants font une formule de 400 caractères en 1 fois.
eric
En fait je sais faire la plupart des choses dans la formule finale que je veux.
La seule partie qui me bloque c'est pour le "A venir" et "A venir (non précisé)" en texte par formule.
Dans ta formule à toi je n'arrive pas a trouver la logique pour compter le nombre de "/".
Si tu devais faire une formule SI, une si il y a deux "/" et une si il y a un seul "/", comment le formulerais tu?
Moi je dois faire partie des ces mutants qui aiment se compliquer la tâche en ne raccourcissant pas leurs formules...
Je vais donc recentrer ma question pour que, si cela ne te dérange pas, tu m'expliques comment faire pour la partie "A venir".
Prenons une formules simple:
SI A2 possède 2 "/" alors "A venir" et SI A2 possède un seul "/" alors "A venir non précisé"
C'est juste ça qui m'intrigue, sachant qu'on est partie sur une cellule au format texte (comme tu m'as dis que c'était possible en rajoutant *1 c'est ça?). Si tu peux me débloquer sur ce point la le problèmes est résolu puisque je sais utiliser le "AUJOURDHUI" (grâce à toi) et que le reste c'est des simples formules SI, SI(ET etc...
Voila, la question était la même depuis le début j'ai juste du mal à m'exprimer.
Tu exagères... Tu as un exemple par formule en E, dans le dernier fichier que j'ai mis.
eric
Tu y as inséré les variantes "Terminé" et "En cours", je ne sais pas si tu as raccourci ta formule ou autre mais je n'y comprend vraiment rien. Tu as l'air à l'aise avec toutes sortes de manip. sur Excel en revanche ce n'est pas mon cas, je ne dis pas que je suis totalement ignare ou que je ne veux pas assimiler quoi que se soit, je dis juste que la formule telle qu'elle est, je ne la comprend fichtrement pas mais je veux comprendre crois moi!
D’où ma dernière question.
Zayx a écrit :Si tu devais faire une formule SI, une si il y a deux "/" et une si il y a un seul "/", comment le formulerais tu?
En saisissant comment tu as fait pour cette partie je pourrai intégrer ceci dans mes futurs formules (si j'en ai d'autre à mettre en place).
=IF(ISERROR(D2*1);D2;IF(LEN(D2)-LEN(SUBSTITUTE(D2;"/";""))=1;"A venir (non précisé)";IF(D2*1<=TODAY();"Terminé";"En cours")))
Je crois avoir compris que si D2 trouve une erreur (de par la format de la date en texte) alors le multiplié par 1 pour, comme tu m'avais dis plus tôt, "forcer la mise en forme date". Ensuite... dans ma tête c'est l'anarchie total si ce n'est le AUJOURDHUI pour les variantes "Terminé" et "En cours"...
Je suis vraiment désolé de t'embêter mais je veux être sur d'avoir compris et de pouvoir utiliser le savoir que tu partages et pas revenir dans 2-3jours en te disant "en fait j'ai pas compris ça, ça et ça"...
=IF(ISERROR(D2*1);D2;IF(LEN(D2)-LEN(SUBSTITUTE(D2;"/";""))=1;"A venir (non précisé)";IF(D2*1<=TODAY();"Terminé";"En cours")))
=IF(ISERROR(D2*1);D2
si erreur, D2 n'est pas convertible en numérique, ce n'est pas une date, c'est donc un texte comme "Abandonné", qui est ramené.
LEN(D2)-LEN(SUBSTITUTE(D2;"/";""))
nombre de "/" (on remplace "/" par "" et on fait la différence des longueurs de chaine pour avoir le nombre de caractères)
si = 1
=> "A venir (non précisé)"
sinon (on suppose que c'est 2 et que c'est une date qu'on va tester)
IF(D2*1<=TODAY()
si date <= aujourdhui()
alors
"Terminé"
sinon
"En cours"
eric
OK j'ai compris l'explication
Dernière chose. Tu dis 'on suppose que c'est 2', donc en supposant on test le reste mais comment donner comme résultat "A venir" en testant si on trouve 2 "/"?
Dans ta formule on est bien d'accord qu'il n'y a que les variantes "A venir (non précisé)", "En cours" et "Terminée"?
Cela donnerai un truc dans le ce genre?
IF(LEN(D2)-LEN(SUBSTITUTE(D2;"/";""))=2;"A venir"
Si j'ai bien compris?
Inutile de me répondre, j'ai compris en fait totalement la chose, mais je vais te prouver que je suis un "mutant" comme tu l'as dis car ma formule est monstrueusement énorme.
=SI(ET('Prévisions séries'!E18="A venir";(OU('Prévisions séries'!B18="!";'Prévisions séries'!C18="!";'Prévisions séries'!D18="!")));"A venir (non précisé)";SI('Prévisions séries'!E18="Terminée";"Terminée";SI('Prévisions séries'!E18="Terminé";"Terminé";SI('Prévisions séries'!E18="En pause";"En pause";SI('Prévisions séries'!E18="Abandonnée";"Abandonnée";SI(ET('Prévisions séries'!E18*1<=AUJOURDHUI();(OU(C18<'Prévisions séries'!B18;E18<'Prévisions séries'!C18;G18<'Prévisions séries'!D18)));"En cours";SI(ET('Prévisions séries'!E18*1<=AUJOURDHUI();C18='Prévisions séries'!B18);"Terminée";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=1;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!B18="!");"Série à venir (non précisé)";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=2;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!B18="!");"Série à venir";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=1;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!C18="!");"OAV à venir (non précisé)";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=2;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!C18="!");"OAV à venir";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=1;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!D18="!");"Film à venir (non précisé)";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=2;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!D18="!");"Film à venir";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=1;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!C18>E18);"OAV à venir (non précisé)";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=2;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!C18>E18);"OAV à venir";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=1;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!D18>G18);"Film à venir (non précisé)";SI(ET(NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";""))=2;'Prévisions séries'!E18*1>AUJOURDHUI();'Prévisions séries'!D18>G18);"Film à venir")))))))))))))))))
Et la tu as droit de rigoler
En revanche une nouvelle question se pose à propose de mes "dates".
J'ai trouvé la formule pour calculer le nombre de jours avant la date pour faire un genre de compte à rebours.
Cependant j'aimerai faire une chose comme
Dans ?? jour(s)
Le "??" étant le nombre de jour(s) calculé via cette formule:
=SI(H18="Série à venir";'Prévisions séries'!G18*1-AUJOURDHUI();"")
Et le reste étant du texte... Comment faire pour mêler texte et formule au milieu de "Dans" et "jours(s)"???
Bonjour,
si aujourdhui()= 13/10/14, aujourdhui()+3=16/10/14.
Vu que tu utilises une dizaine de fois NBCAR('Prévisions séries'!E18)-NBCAR(SUBSTITUE('Prévisions séries'!E18;"/";"")) tu as tout intérêt à le ressortir dans une colonne.
Ca évite à excel de calculer 10 fois la même chose et surtout ça allège la lecture de la formule, d'autant plus si tu nommes la plage.
En la complétant un peu pour retourner 0 pour du texte, en plus de 1 ou 2 pour les /.
eric
Bonjour,
Désolé j'ai oublié de te remercier et de clôturer le sujet le problème étant résolu!
Encore un gros merci, j'ai réussi à faire mes formules comme je le voulais et à automatiser quasi entièrement mon fichier!
Sur ce à la prochaine!