Souci dans formule Excel

Résolu
jh_kd Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -  
jh_kd Messages postés 41 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'écris ce message dans le sous-forum Excel mais il est possible qu'il concerne plutôt (ou aussi) le sous-forum php.
En tout état de cause j'ai d'abord une erreur de formule dans Excel.

Voilà, j'ai une formule qui marche dans Excel (et aussi sur Internet pour le code PHP), sachant que partout les LC contiennent du texte variable selon les lignes

="<?php $text = '"&LC(-8)&" - "&LC(-7)&" ("&LC(-6)&") | "&LC(-5)&" | "&LC(-4)&" | "&LC(-3)&" - "&LC(-2)&"…<a href="""&LC(-1)&""" target=""_blank"">+++</a>"&"'; if ((strtotime(""now"") <= strtotime (substr($text,0,10))) && (strtotime(""+1 month"") >= strtotime (substr($text,0,10)))){echo $text . '<br>';} else {echo '';}?>"

3 colonnes plus loin dans la même ligne, j'ai la formule suivante similaire qui est refusée par Excel.

="<?php $text2 = '"<tr><td>"&LC(-11)&"<br> ("&LC(-10)&" - "&LC(-9)&")</td><td>"&LC(-8)&"</td><td>"&LC(-7)&"</td><td>"&LC(-6)&"</td><td>"&LC(-5)&"</td><td><a href="""&LC(-4)&""" target=""_blank"">+++</a></td></tr>"&"'; if ((strtotime(""2022-01-01"") <= strtotime (substr($text2,9,10))) || (strtotime(""+1 month"") >= strtotime (substr($text2,9,10)))) {echo $text2 . '<br>';} else {echo '';}?>"

J'ai essayé plein de variations sur la position et le nombre de caractères ' " ' mais je n'y arrive pas y compris avec strtotime(2022-01-01) au lieu de strtotime(""2022-01-01""), la seule différence avec la première formule qui marche est que le if est ici avec OU alors que dans la première c'est un if ave ET

Merci de votre coup de pouce!

Cordialement

JH

Configuration: Windows / Opera 82.0.4227.43

3 réponses

Raymond PENTIER Messages postés 58989 Date d'inscription   Statut Contributeur Dernière intervention   17 353
 
Bonjour.

Pourquoi trouves-tu surprenant qu'une formule en programmation php soit illisible par le logiciel Excel ?
Moi, ce qui me stupéfie, c'est que ta première formule soit reconnue par Excel !
J'ai essayé : ça ne marche évidemment pas ...
0
jh_kd Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Je ne sais pas comment répondre.

La 1ère formule ne donne pas de message d'erreur car pour Excel elle est bonne (c'est indépendant de PHP, la vérification de PHP se fait ensuite par ex après avoir mis le fichier sur Internet).
Excel considère la 1ère formule comme une suite de concaténation de cellules et de texte (le code PHP étant compris comme du texte).
Pas de souci.
Comme je l'ai dit il y a sans doute un souci de ' " ', mais je ne trouve pas.
Quand je met la 2ème formule dans la cellule Excel ouvre une pop-up avec:
<<<<<
Nous avons rencontré un problème avec cette formule.
Etes-vous en train, etc.
>>>>
J'ai donc sollicité les yeux d'un expert qui est neuf.

Merci

Cdlt, JH
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

pour moi ta 1ère formule ne se valide pas non sur excel, je ne regarde que la 2nde.

="<?php $text2 = '"<tr><td>"    

Dès le début ca cloche.
Avec le 2nd " ça ferme la chaine et tu poursuis avec
<tr><td>
donc non déclaré en chaine. Il faut supprimer ce 2nd " :
="<?php $text2 = '<tr><td>"

Mais maintenant on se retrouve avec une simple quote qui semble être toute seule. Etrange...
Vue l'heure, je n'ai pas été plus loin.
Si ça n'est pas suffisant il faudrait un exemple entièrement en chaine (correcte pour PHP) de ce que tu veux obtenir.
eric

PS : met ta phrase PHP à la syntaxe correcte sans rien ajouter toi-même. Remplace les variables par &XX& ça sera plus facile pour nous
0
jh_kd Messages postés 41 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Ah, bravos et merci Eriiic!

J'avais le nez dans le guidon, donc je bloquais.
Pourtant j'ai laissé passer plusieurs nuits avant de poster.
Comme suggéré j'ai isolé la formule hors code PHP et Excel m'a dit qu'il y avait une erreur et m'a proposé de la corriger.

Voici la bonne version (finale) dont le code PHP marche aussi sur Internet.

="<?php $text2 = '<tr><td>"&LC(-11)&"<br> ("&LC(-10)&" - "&LC(-9)&")</td><td>"&LC(-8)&"</td><td>"&LC(-7)&"</td><td>"&LC(-6)&"</td><td>"&LC(-5)&"</td><td><a href="""&LC(-4)&""" target=""_blank"">+++</a></td></tr>"&"'; if ((strtotime(""2022-01-01"") <= strtotime (substr($text2,9,10))) || (strtotime(""+1 month"") >= strtotime (substr($text2,8,10)))) {echo $text2;} else {echo '';}?>"

Merci encore pour cet œil neuf.

Cdlt, JH
0