Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

conversion de formule en texte et vice versa

14 réponses
Avatar
lion10
Bonjour

Dans une cellule A2 j'ai une formule par exemple
en A1 j'ai = texte_formule_1
cela marche comme je veux ok, j'obtiens bien le résultat correspondant à la
formule.

Mais dans une autre cellule A2 je veux créer une formule
du style =texte_formule_1 + complément_texte qui me donnerait un second
résultat.

L'idée est donc de concaténer le texte récupéré de A1 et le texte
complémentaire qui pourrait être contenu dans A3.

Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
sinon je connais bien l'opérateur de concaténation "&".

Est ce possible de le faire hors vba sous ecell 2003 ?

J'ai vu sous le forum la fonction vba :
Function Afficheformule(x)
Afficheformule = x.Formula
End Function

mais pb elle me renvoie par ex :
en i219 j'ai =DECALER(action_s11;0;(X$155-11)*7;;)
en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
=OFFSET(action_s11,0,(X$155-11)*7,,)

Il faudrait ensuite que je supprime le début de la chaine et puis que
reconvertisse le tout en formule.

D'avance merci
cdlt

10 réponses

1 2
Avatar
Youky
Function Afficheformule(x)
Afficheformule = x.FormulaLocal
End Function

Mets formulalocal au lieu de formula
Youky
Avatar
Corto
Bonjour lion10,
Tu es sur la bonne voie, le problème est que Excel renvoie les formu les
en Anglais.
Tu peux retrouver la correspondance avec les fonctions en Français d ans
le fichier suivant (Office 2003).
C:Program FilesMicrosoft OfficeOFFICE111036VBALIST.XLS
Si tu as une autre version que 2003, il faut remplacer OFFICE11 par :
OFFICE08 : Office 97
OFFICE09 : Office 2000
OFFICE10 : Office 2002
OFFICE12 : Office 2007

Corto

lion10 a écrit :
Bonjour

Dans une cellule A2 j'ai une formule par exemple
en A1 j'ai = texte_formule_1
cela marche comme je veux ok, j'obtiens bien le résultat correspon dant à la
formule.

Mais dans une autre cellule A2 je veux créer une formule
du style =texte_formule_1 + complément_texte qui me donnerait un second
résultat.

L'idée est donc de concaténer le texte récupéré de A1 et le texte
complémentaire qui pourrait être contenu dans A3.

Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
sinon je connais bien l'opérateur de concaténation "&".

Est ce possible de le faire hors vba sous ecell 2003 ?

J'ai vu sous le forum la fonction vba :
Function Afficheformule(x)
Afficheformule = x.Formula
End Function

mais pb elle me renvoie par ex :
en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
=OFFSET(action_s11,0,(X$155-11)*7,,)

Il faudrait ensuite que je supprime le début de la chaine et puis que
reconvertisse le tout en formule.

D'avance merci
cdlt



Avatar
lion10
Bonjour
Merci pour vos premières réponses mais il me reste à convertir le texte en
formule.
je suis passé par substitue pour remplacer offset par decaler.
Dans mon exemple j'ai récupérer une valeur qui correspond à la chaine de
texte de la formule, mais je veux maintenant faire la transformation inverse
autrement dit :
J'ai dans une cellule A5 la chaine de texte
"ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
l'évaluation de la formule issu du texte de A5.

D'avance merci

cdlt


"lion10" a écrit :

Bonjour

Dans une cellule A2 j'ai une formule par exemple
en A1 j'ai = texte_formule_1
cela marche comme je veux ok, j'obtiens bien le résultat correspondant à la
formule.

Mais dans une autre cellule A2 je veux créer une formule
du style =texte_formule_1 + complément_texte qui me donnerait un second
résultat.

L'idée est donc de concaténer le texte récupéré de A1 et le texte
complémentaire qui pourrait être contenu dans A3.

Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
sinon je connais bien l'opérateur de concaténation "&".

Est ce possible de le faire hors vba sous ecell 2003 ?

J'ai vu sous le forum la fonction vba :
Function Afficheformule(x)
Afficheformule = x.Formula
End Function

mais pb elle me renvoie par ex :
en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
=OFFSET(action_s11,0,(X$155-11)*7,,)

Il faudrait ensuite que je supprime le début de la chaine et puis que
reconvertisse le tout en formule.

D'avance merci
cdlt


Avatar
Corto
Bonjour lion10,
Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7;;)"
(Propriété par défaut : Value), affecte la chaine à l a propriété
FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$155-11)*7 ;;)".

Corto

lion10 a écrit :
Bonjour
Merci pour vos premières réponses mais il me reste à con vertir le texte en
formule.
je suis passé par substitue pour remplacer offset par decaler.
Dans mon exemple j'ai récupérer une valeur qui correspond à   la chaine de
texte de la formule, mais je veux maintenant faire la transformation in verse
autrement dit :
J'ai dans une cellule A5 la chaine de texte
"ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
l'évaluation de la formule issu du texte de A5.

D'avance merci

cdlt


"lion10" a écrit :


Bonjour

Dans une cellule A2 j'ai une formule par exemple
en A1 j'ai = texte_formule_1
cela marche comme je veux ok, j'obtiens bien le résultat correspo ndant à la
formule.

Mais dans une autre cellule A2 je veux créer une formule
du style =texte_formule_1 + complément_texte qui me donnerait u n second
résultat.

L'idée est donc de concaténer le texte récupéré de A1 et le texte
complémentaire qui pourrait être contenu dans A3.

Seulement je ne sais pas le faire, car il s'agit du texte d'une formul e
sinon je connais bien l'opérateur de concaténation "&".

Est ce possible de le faire hors vba sous ecell 2003 ?

J'ai vu sous le forum la fonction vba :
Function Afficheformule(x)
Afficheformule = x.Formula
End Function

mais pb elle me renvoie par ex :
en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
=OFFSET(action_s11,0,(X$155-11)*7,,)

Il faudrait ensuite que je supprime le début de la chaine et pui s que
reconvertisse le tout en formule.

D'avance merci
cdlt





Avatar
lion10
Merci mais j'ai un pb je suis débutant en VBA, j'ai donc mis dans un module
Function Evalueformule(x)
Value.FormulaLocal = x
End Function

Et dans le tableur je passe en argument la formule auquelle j'ai ajouté les
accolades du calcul matriciel soit =("{=" & I234 & "}")
Donc en résumé x reçoit bien la bonne formule mais cela me donne un #erreur
contrairement à la formule qui fct.
x= {= DECALER(action_s11;0;(X$155-11)*7;;)}

Faut-il mettre value., ou formulalocal.value, ... ou que sais je ? j'ai
fait différents essais et chercher sur internet, l'aide de visual c'est BOF,
c'est l'échec.

cdlt

"Corto" a écrit :

Bonjour lion10,
Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7;;)"
(Propriété par défaut : Value), affecte la chaine à la propriété
FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$155-11)*7;;)".

Corto

lion10 a écrit :
> Bonjour
> Merci pour vos premières réponses mais il me reste à convertir le texte en
> formule.
> je suis passé par substitue pour remplacer offset par decaler.
> Dans mon exemple j'ai récupérer une valeur qui correspond à la chaine de
> texte de la formule, mais je veux maintenant faire la transformation inverse
> autrement dit :
> J'ai dans une cellule A5 la chaine de texte
> "ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
> l'évaluation de la formule issu du texte de A5.
>
> D'avance merci
>
> cdlt
>
>
> "lion10" a écrit :
>
>
>> Bonjour
>>
>> Dans une cellule A2 j'ai une formule par exemple
>> en A1 j'ai = texte_formule_1
>> cela marche comme je veux ok, j'obtiens bien le résultat correspondant à la
>> formule.
>>
>> Mais dans une autre cellule A2 je veux créer une formule
>> du style =texte_formule_1 + complément_texte qui me donnerait un second
>> résultat.
>>
>> L'idée est donc de concaténer le texte récupéré de A1 et le texte
>> complémentaire qui pourrait être contenu dans A3.
>>
>> Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
>> sinon je connais bien l'opérateur de concaténation "&".
>>
>> Est ce possible de le faire hors vba sous ecell 2003 ?
>>
>> J'ai vu sous le forum la fonction vba :
>> Function Afficheformule(x)
>> Afficheformule = x.Formula
>> End Function
>>
>> mais pb elle me renvoie par ex :
>> en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
>> en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
>> =OFFSET(action_s11,0,(X$155-11)*7,,)
>>
>> Il faudrait ensuite que je supprime le début de la chaine et puis que
>> reconvertisse le tout en formule.
>>
>> D'avance merci
>> cdlt
>>



Avatar
lion10
bonjour

je suis tjs bloqué.
j'ai recherché sur le net mais mes essais restent sans résultat je récupère
tjs #erreur !!

Pourtant j'ai corrigé en mettant :
Function Evalueformule(x)
ActiveCell.Formula = x
End Function

J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même avec
une chaine x toute bête genre ¡*a2

Ma fonction est dans le même module que la fonction affiche formule ce ne
doit pas être un pb de visibilité export ??

D'avance merci



"lion10" a écrit :


Merci mais j'ai un pb je suis débutant en VBA, j'ai donc mis dans un module
Function Evalueformule(x)
Value.FormulaLocal = x
End Function

Et dans le tableur je passe en argument la formule auquelle j'ai ajouté les
accolades du calcul matriciel soit =("{=" & I234 & "}")
Donc en résumé x reçoit bien la bonne formule mais cela me donne un #erreur
contrairement à la formule qui fct.
x= {= DECALER(action_s11;0;(X$155-11)*7;;)}

Faut-il mettre value., ou formulalocal.value, ... ou que sais je ? j'ai
fait différents essais et chercher sur internet, l'aide de visual c'est BOF,
c'est l'échec.

cdlt

"Corto" a écrit :

> Bonjour lion10,
> Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7;;)"
> (Propriété par défaut : Value), affecte la chaine à la propriété
> FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$155-11)*7;;)".
>
> Corto
>
> lion10 a écrit :
> > Bonjour
> > Merci pour vos premières réponses mais il me reste à convertir le texte en
> > formule.
> > je suis passé par substitue pour remplacer offset par decaler.
> > Dans mon exemple j'ai récupérer une valeur qui correspond à la chaine de
> > texte de la formule, mais je veux maintenant faire la transformation inverse
> > autrement dit :
> > J'ai dans une cellule A5 la chaine de texte
> > "ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
> > l'évaluation de la formule issu du texte de A5.
> >
> > D'avance merci
> >
> > cdlt
> >
> >
> > "lion10" a écrit :
> >
> >
> >> Bonjour
> >>
> >> Dans une cellule A2 j'ai une formule par exemple
> >> en A1 j'ai = texte_formule_1
> >> cela marche comme je veux ok, j'obtiens bien le résultat correspondant à la
> >> formule.
> >>
> >> Mais dans une autre cellule A2 je veux créer une formule
> >> du style =texte_formule_1 + complément_texte qui me donnerait un second
> >> résultat.
> >>
> >> L'idée est donc de concaténer le texte récupéré de A1 et le texte
> >> complémentaire qui pourrait être contenu dans A3.
> >>
> >> Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
> >> sinon je connais bien l'opérateur de concaténation "&".
> >>
> >> Est ce possible de le faire hors vba sous ecell 2003 ?
> >>
> >> J'ai vu sous le forum la fonction vba :
> >> Function Afficheformule(x)
> >> Afficheformule = x.Formula
> >> End Function
> >>
> >> mais pb elle me renvoie par ex :
> >> en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
> >> en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
> >> =OFFSET(action_s11,0,(X$155-11)*7,,)
> >>
> >> Il faudrait ensuite que je supprime le début de la chaine et puis que
> >> reconvertisse le tout en formule.
> >>
> >> D'avance merci
> >> cdlt
> >>
>


Avatar
Corto
Bonjour lion10,
Désolé, j'étais en congé ces deux dernier jours pour l'Aïd el Fitr.
La formule (qui fonctionne chez moi) est :
[A5].Formula = "=OFFSET(action_s11,0,(X$155-11)*7)"
ou [A5].FormulaLocal = "ÞCALER(action_s11;0;(X$155-11)*7)"
NB les séparateurs en Anglais sont des , en Français ce sont de s ;
Je me suis bien sûr débrouillé pour que 11 < X$155 < 46 po ur que la
formule donne un résultat correct ( >0 et < 256)
Si tu n'y arrives toujours pas, mets ton fichier sur cjoint.com et poste
l'adresse générée.

Corto

lion10 a écrit :
bonjour

je suis tjs bloqué.
j'ai recherché sur le net mais mes essais restent sans résult at je récupère
tjs #erreur !!

Pourtant j'ai corrigé en mettant :
Function Evalueformule(x)
ActiveCell.Formula = x
End Function

J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même avec
une chaine x toute bête genre ¡*a2

Ma fonction est dans le même module que la fonction affiche formul e ce ne
doit pas être un pb de visibilité export ??

D'avance merci



"lion10" a écrit :


Merci mais j'ai un pb je suis débutant en VBA, j'ai donc mis dans un module
Function Evalueformule(x)
Value.FormulaLocal = x
End Function

Et dans le tableur je passe en argument la formule auquelle j'ai ajout é les
accolades du calcul matriciel soit =("{=" & I234 & "}")
Donc en résumé x reçoit bien la bonne formule mais cela me donne un #erreur
contrairement à la formule qui fct.
x= {= DECALER(action_s11;0;(X$155-11)*7;;)}

Faut-il mettre value., ou formulalocal.value, ... ou que sais je ? j' ai
fait différents essais et chercher sur internet, l'aide de visual c'est BOF,
c'est l'échec.

cdlt

"Corto" a écrit :


Bonjour lion10,
Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7;;)"
(Propriété par défaut : Value), affecte la chaine à la propriété
FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$155-1 1)*7;;)".

Corto

lion10 a écrit :

Bonjour
Merci pour vos premières réponses mais il me reste à convertir le texte en
formule.
je suis passé par substitue pour remplacer offset par decaler.
Dans mon exemple j'ai récupérer une valeur qui correspond à la chaine de
texte de la formule, mais je veux maintenant faire la transformation inverse
autrement dit :
J'ai dans une cellule A5 la chaine de texte
"ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
l'évaluation de la formule issu du texte de A5.

D'avance merci

cdlt


"lion10" a écrit :



Bonjour

Dans une cellule A2 j'ai une formule par exemple
en A1 j'ai = texte_formule_1
cela marche comme je veux ok, j'obtiens bien le résultat corre spondant à la
formule.

Mais dans une autre cellule A2 je veux créer une formule
du style =texte_formule_1 + complément_texte qui me donnerai t un second
résultat.

L'idée est donc de concaténer le texte récupérà © de A1 et le texte
complémentaire qui pourrait être contenu dans A3.

Seulement je ne sais pas le faire, car il s'agit du texte d'une for mule
sinon je connais bien l'opérateur de concaténation "&".

Est ce possible de le faire hors vba sous ecell 2003 ?

J'ai vu sous le forum la fonction vba :
Function Afficheformule(x)
Afficheformule = x.Formula
End Function

mais pb elle me renvoie par ex :
en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
=OFFSET(action_s11,0,(X$155-11)*7,,)

Il faudrait ensuite que je supprime le début de la chaine et puis que
reconvertisse le tout en formule.

D'avance merci
cdlt












Avatar
lion10
Bonjour Corto

Vraiment merci de revenir à mon aide.
http://cjoint.com/data/kcmQlD2mAN.htm

Dans le fichier j'ai marqué en rouge mes problèmes :
fonction evalue formule
fonction aff date
et éventuellement un mystère concernant le dysfonctionnement de la fonction
cherche en matriciel.

Cordialement Lion10

"Corto" a écrit :

Bonjour lion10,
Désolé, j'étais en congé ces deux dernier jours pour l'Aïd el Fitr.
La formule (qui fonctionne chez moi) est :
[A5].Formula = "=OFFSET(action_s11,0,(X$155-11)*7)"
ou [A5].FormulaLocal = "ÞCALER(action_s11;0;(X$155-11)*7)"
NB les séparateurs en Anglais sont des , en Français ce sont des ;
Je me suis bien sûr débrouillé pour que 11 < X$155 < 46 pour que la
formule donne un résultat correct ( >0 et < 256)
Si tu n'y arrives toujours pas, mets ton fichier sur cjoint.com et poste
l'adresse générée.

Corto

lion10 a écrit :
> bonjour
>
> je suis tjs bloqué.
> j'ai recherché sur le net mais mes essais restent sans résultat je récupère
> tjs #erreur !!
>
> Pourtant j'ai corrigé en mettant :
> Function Evalueformule(x)
> ActiveCell.Formula = x
> End Function
>
> J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même avec
> une chaine x toute bête genre ¡*a2
>
> Ma fonction est dans le même module que la fonction affiche formule ce ne
> doit pas être un pb de visibilité export ??
>
> D'avance merci
>
>
>
> "lion10" a écrit :
>
>
>> Merci mais j'ai un pb je suis débutant en VBA, j'ai donc mis dans un module
>> Function Evalueformule(x)
>> Value.FormulaLocal = x
>> End Function
>>
>> Et dans le tableur je passe en argument la formule auquelle j'ai ajouté les
>> accolades du calcul matriciel soit =("{=" & I234 & "}")
>> Donc en résumé x reçoit bien la bonne formule mais cela me donne un #erreur
>> contrairement à la formule qui fct.
>> x= {= DECALER(action_s11;0;(X$155-11)*7;;)}
>>
>> Faut-il mettre value., ou formulalocal.value, ... ou que sais je ? j'ai
>> fait différents essais et chercher sur internet, l'aide de visual c'est BOF,
>> c'est l'échec.
>>
>> cdlt
>>
>> "Corto" a écrit :
>>
>>
>>> Bonjour lion10,
>>> Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7;;)"
>>> (Propriété par défaut : Value), affecte la chaine à la propriété
>>> FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$155-11)*7;;)".
>>>
>>> Corto
>>>
>>> lion10 a écrit :
>>>
>>>> Bonjour
>>>> Merci pour vos premières réponses mais il me reste à convertir le texte en
>>>> formule.
>>>> je suis passé par substitue pour remplacer offset par decaler.
>>>> Dans mon exemple j'ai récupérer une valeur qui correspond à la chaine de
>>>> texte de la formule, mais je veux maintenant faire la transformation inverse
>>>> autrement dit :
>>>> J'ai dans une cellule A5 la chaine de texte
>>>> "ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
>>>> l'évaluation de la formule issu du texte de A5.
>>>>
>>>> D'avance merci
>>>>
>>>> cdlt
>>>>
>>>>
>>>> "lion10" a écrit :
>>>>
>>>>
>>>>
>>>>> Bonjour
>>>>>
>>>>> Dans une cellule A2 j'ai une formule par exemple
>>>>> en A1 j'ai = texte_formule_1
>>>>> cela marche comme je veux ok, j'obtiens bien le résultat correspondant à la
>>>>> formule.
>>>>>
>>>>> Mais dans une autre cellule A2 je veux créer une formule
>>>>> du style =texte_formule_1 + complément_texte qui me donnerait un second
>>>>> résultat.
>>>>>
>>>>> L'idée est donc de concaténer le texte récupéré de A1 et le texte
>>>>> complémentaire qui pourrait être contenu dans A3.
>>>>>
>>>>> Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
>>>>> sinon je connais bien l'opérateur de concaténation "&".
>>>>>
>>>>> Est ce possible de le faire hors vba sous ecell 2003 ?
>>>>>
>>>>> J'ai vu sous le forum la fonction vba :
>>>>> Function Afficheformule(x)
>>>>> Afficheformule = x.Formula
>>>>> End Function
>>>>>
>>>>> mais pb elle me renvoie par ex :
>>>>> en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
>>>>> en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
>>>>> =OFFSET(action_s11,0,(X$155-11)*7,,)
>>>>>
>>>>> Il faudrait ensuite que je supprime le début de la chaine et puis que
>>>>> reconvertisse le tout en formule.
>>>>>
>>>>> D'avance merci
>>>>> cdlt
>>>>>
>>>>>



Avatar
lion10
Bonjour corto,
Pour cherche je comprends mieux pourquoi il ne trouve pas ma chaine ds la
deuxième ligne issu du décalage de actions11. J'aurai pensé qd même que le
calcul matriciel permette de faire la recherche de lma chaine en faisant la
recherche ligne par ligne cad par ligne de 7 colonnes.

Sinon je reviens à mon pb de base ds cet essai simple et je reformule donc :
en l197 j'ai une formule simple de concaténation
en l198 j'extrait la formule sans signe = car fct substitue
en l199 je recré la chaine =i194 & i195
en l200 je passe cette chaine à la fct evalue formule.
et j'attends de voir en L200 le résultat donc essai 5 essai 6 ds le cas de
cet exemple.

Autre exemple en l204 j'attends de voir la date du jour suite à l'évaluation
de la formule maintenant.


cdlt lion10

"Corto" a écrit :

Bonjour lion10,
La fonction CHERCHE : *CHERCHE*(*texte_cherché*;*texte*;no_départ)
attend comme paramètre une chaine de caractère et pas une plage de
cellules, pour rechercher dans une plage de cellule, il faut utiliser*
**EQUIV*(*valeur_cherchée*;*matrice_recherche*;type).
Dans une fonction tu dois impérativement renvoyer une valeur
Function Aff_date()
Aff_date = Now
End Function
Pour le reste, je ne comprends pas ce que tu cherches à faire, si les
formules en I198, I199 et I200 fonctionnaient ça ne ferait rien de plus
que si tu mettait directement dans I200 = I197.

Corto

lion10 a écrit :
> Bonjour Corto
>
> Vraiment merci de revenir à mon aide.
> http://cjoint.com/data/kcmQlD2mAN.htm
>
> Dans le fichier j'ai marqué en rouge mes problèmes :
> fonction evalue formule
> fonction aff date
> et éventuellement un mystère concernant le dysfonctionnement de la fonction
> cherche en matriciel.
>
> Cordialement Lion10
>
> "Corto" a écrit :
>
>
>> Bonjour lion10,
>> Désolé, j'étais en congé ces deux dernier jours pour l'Aïd el Fitr.
>> La formule (qui fonctionne chez moi) est :
>> [A5].Formula = "=OFFSET(action_s11,0,(X$155-11)*7)"
>> ou [A5].FormulaLocal = "ÞCALER(action_s11;0;(X$155-11)*7)"
>> NB les séparateurs en Anglais sont des , en Français ce sont des ;
>> Je me suis bien sûr débrouillé pour que 11 < X$155 < 46 pour que la
>> formule donne un résultat correct ( >0 et < 256)
>> Si tu n'y arrives toujours pas, mets ton fichier sur cjoint.com et poste
>> l'adresse générée.
>>
>> Corto
>>
>> lion10 a écrit :
>>
>>> bonjour
>>>
>>> je suis tjs bloqué.
>>> j'ai recherché sur le net mais mes essais restent sans résultat je récupère
>>> tjs #erreur !!
>>>
>>> Pourtant j'ai corrigé en mettant :
>>> Function Evalueformule(x)
>>> ActiveCell.Formula = x
>>> End Function
>>>
>>> J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même avec
>>> une chaine x toute bête genre ¡*a2
>>>
>>> Ma fonction est dans le même module que la fonction affiche formule ce ne
>>> doit pas être un pb de visibilité export ??
>>>
>>> D'avance merci
>>>
>>>
>>>
>>> "lion10" a écrit :
>>>
>>>
>>>
>>>> Merci mais j'ai un pb je suis débutant en VBA, j'ai donc mis dans un module
>>>> Function Evalueformule(x)
>>>> Value.FormulaLocal = x
>>>> End Function
>>>>
>>>> Et dans le tableur je passe en argument la formule auquelle j'ai ajouté les
>>>> accolades du calcul matriciel soit =("{=" & I234 & "}")
>>>> Donc en résumé x reçoit bien la bonne formule mais cela me donne un #erreur
>>>> contrairement à la formule qui fct.
>>>> x= {= DECALER(action_s11;0;(X$155-11)*7;;)}
>>>>
>>>> Faut-il mettre value., ou formulalocal.value, ... ou que sais je ? j'ai
>>>> fait différents essais et chercher sur internet, l'aide de visual c'est BOF,
>>>> c'est l'échec.
>>>>
>>>> cdlt
>>>>
>>>> "Corto" a écrit :
>>>>
>>>>
>>>>
>>>>> Bonjour lion10,
>>>>> Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7;;)"
>>>>> (Propriété par défaut : Value), affecte la chaine à la propriété
>>>>> FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$155-11)*7;;)".
>>>>>
>>>>> Corto
>>>>>
>>>>> lion10 a écrit :
>>>>>
>>>>>
>>>>>> Bonjour
>>>>>> Merci pour vos premières réponses mais il me reste à convertir le texte en
>>>>>> formule.
>>>>>> je suis passé par substitue pour remplacer offset par decaler.
>>>>>> Dans mon exemple j'ai récupérer une valeur qui correspond à la chaine de
>>>>>> texte de la formule, mais je veux maintenant faire la transformation inverse
>>>>>> autrement dit :
>>>>>> J'ai dans une cellule A5 la chaine de texte
>>>>>> "ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
>>>>>> l'évaluation de la formule issu du texte de A5.
>>>>>>
>>>>>> D'avance merci
>>>>>>
>>>>>> cdlt
>>>>>>
>>>>>>
>>>>>> "lion10" a écrit :
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Bonjour
>>>>>>>
>>>>>>> Dans une cellule A2 j'ai une formule par exemple
>>>>>>> en A1 j'ai = texte_formule_1
>>>>>>> cela marche comme je veux ok, j'obtiens bien le résultat correspondant à la
>>>>>>> formule.
>>>>>>>
>>>>>>> Mais dans une autre cellule A2 je veux créer une formule
>>>>>>> du style =texte_formule_1 + complément_texte qui me donnerait un second
>>>>>>> résultat.
>>>>>>>
>>>>>>> L'idée est donc de concaténer le texte récupéré de A1 et le texte
>>>>>>> complémentaire qui pourrait être contenu dans A3.
>>>>>>>
>>>>>>> Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
>>>>>>> sinon je connais bien l'opérateur de concaténation "&".
>>>>>>>
>>>>>>> Est ce possible de le faire hors vba sous ecell 2003 ?
>>>>>>>
>>>>>>> J'ai vu sous le forum la fonction vba :
>>>>>>> Function Afficheformule(x)
>>>>>>> Afficheformule = x.Formula
>>>>>>> End Function
>>>>>>>
>>>>>>> mais pb elle me renvoie par ex :
>>>>>>> en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
>>>>>>> en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyée est
>>>>>>> =OFFSET(action_s11,0,(X$155-11)*7,,)
>>>>>>>
>>>>>>> Il faudrait ensuite que je supprime le début de la chaine et puis que
>>>>>>> reconvertisse le tout en formule.
>>>>>>>
>>>>>>> D'avance merci
>>>>>>> cdlt
>>>>>>>
>>>>>>>
>>>>>>>



Avatar
Corto
Bonjour lion10,
Pour la cellule L204 il faut remplacer ta fonction Aff_date par la
suivante :
Function Aff_date()
Aff_date = Now
End Function
Pour la fonction Evalueformule :
Function Evalueformule(x)
Evalueformule = Evaluate(Trim(x))
End Function
Trim sert à supprimer les espaces inutiles dans la chaine de caractà ¨res.
et Afficheformule :
Function Afficheformule(x)
Afficheformule = x.FormulaLocal
End Function

Ce que je ne comprend pas dans ta démarche c'est pouquoi tu veux met tre
4 formules et deux fonctions pour obtenir le même résultat que si tu
avais mis = L197 en L200

Corto

lion10 a écrit :
Bonjour corto,
Pour cherche je comprends mieux pourquoi il ne trouve pas ma chaine ds la
deuxième ligne issu du décalage de actions11. J'aurai pensà © qd même que le
calcul matriciel permette de faire la recherche de lma chaine en faisan t la
recherche ligne par ligne cad par ligne de 7 colonnes.

Sinon je reviens à mon pb de base ds cet essai simple et je reform ule donc :
en l197 j'ai une formule simple de concaténation
en l198 j'extrait la formule sans signe = car fct substitue
en l199 je recré la chaine =i194 & i195
en l200 je passe cette chaine à la fct evalue formule.
et j'attends de voir en L200 le résultat donc essai 5 essai 6 ds l e cas de
cet exemple.

Autre exemple en l204 j'attends de voir la date du jour suite à l' évaluation
de la formule maintenant.


cdlt lion10

"Corto" a écrit :


Bonjour lion10,
La fonction CHERCHE : *CHERCHE*(*texte_cherché*;*texte*;no_dé part)
attend comme paramètre une chaine de caractère et pas une pl age de
cellules, pour rechercher dans une plage de cellule, il faut utiliser*
**EQUIV*(*valeur_cherchée*;*matrice_recherche*;type).
Dans une fonction tu dois impérativement renvoyer une valeur
Function Aff_date()
Aff_date = Now
End Function
Pour le reste, je ne comprends pas ce que tu cherches à faire, si les
formules en I198, I199 et I200 fonctionnaient ça ne ferait rien d e plus
que si tu mettait directement dans I200 = I197.

Corto

lion10 a écrit :

Bonjour Corto

Vraiment merci de revenir à mon aide.
http://cjoint.com/data/kcmQlD2mAN.htm

Dans le fichier j'ai marqué en rouge mes problèmes :
fonction evalue formule
fonction aff date
et éventuellement un mystère concernant le dysfonctionnemen t de la fonction
cherche en matriciel.

Cordialement Lion10

"Corto" a écrit :



Bonjour lion10,
Désolé, j'étais en congé ces deux dernier jours pour l'Aïd el Fitr.
La formule (qui fonctionne chez moi) est :
[A5].Formula = "=OFFSET(action_s11,0,(X$155-11)*7)"
ou [A5].FormulaLocal = "ÞCALER(action_s11;0;(X$155-11)*7)"
NB les séparateurs en Anglais sont des , en Français ce so nt des ;
Je me suis bien sûr débrouillé pour que 11 < X$155 < 46 pour que la
formule donne un résultat correct ( >0 et < 256)
Si tu n'y arrives toujours pas, mets ton fichier sur cjoint.com et p oste
l'adresse générée.

Corto

lion10 a écrit :


bonjour

je suis tjs bloqué.
j'ai recherché sur le net mais mes essais restent sans ré sultat je récupère
tjs #erreur !!

Pourtant j'ai corrigé en mettant :
Function Evalueformule(x)
ActiveCell.Formula = x
End Function

J'ai essayé avec formulalocal, formula en rajoutant aussi R1C1 et même avec
une chaine x toute bête genre ¡*a2

Ma fonction est dans le même module que la fonction affiche fo rmule ce ne
doit pas être un pb de visibilité export ??

D'avance merci



"lion10" a écrit :




Merci mais j'ai un pb je suis débutant en VBA, j'ai donc mis dans un module
Function Evalueformule(x)
Value.FormulaLocal = x
End Function

Et dans le tableur je passe en argument la formule auquelle j'ai a jouté les
accolades du calcul matriciel soit =("{=" & I234 & "}")
Donc en résumé x reçoit bien la bonne formule mais cela me donne un #erreur
contrairement à la formule qui fct.
x= {= DECALER(action_s11;0;(X$155-11)*7;;)}

Faut-il mettre value., ou formulalocal.value, ... ou que sais je ? j'ai
fait différents essais et chercher sur internet, l'aide de vi sual c'est BOF,
c'est l'échec.

cdlt

"Corto" a écrit :




Bonjour lion10,
Au lieu d'affecter [A5] = "ÞCALER(action_s11;0;(X$155-11)*7 ;;)"
(Propriété par défaut : Value), affecte la chaine à la propriété
FormulaLocal. ou alors [A5].Formula = "OFFSET(action_s11;0;(X$1 55-11)*7;;)".

Corto

lion10 a écrit :



Bonjour
Merci pour vos premières réponses mais il me reste à   convertir le texte en
formule.
je suis passé par substitue pour remplacer offset par decal er.
Dans mon exemple j'ai récupérer une valeur qui corresp ond à la chaine de
texte de la formule, mais je veux maintenant faire la transforma tion inverse
autrement dit :
J'ai dans une cellule A5 la chaine de texte
"ÞCALER(action_s11;0;(X$155-11)*7;;)" et je veux obtenir en A6
l'évaluation de la formule issu du texte de A5.

D'avance merci

cdlt


"lion10" a écrit :





Bonjour

Dans une cellule A2 j'ai une formule par exemple
en A1 j'ai = texte_formule_1
cela marche comme je veux ok, j'obtiens bien le résultat c orrespondant à la
formule.

Mais dans une autre cellule A2 je veux créer une formule
du style =texte_formule_1 + complément_texte qui me donn erait un second
résultat.

L'idée est donc de concaténer le texte récupé ré de A1 et le texte
complémentaire qui pourrait être contenu dans A3.

Seulement je ne sais pas le faire, car il s'agit du texte d'une formule
sinon je connais bien l'opérateur de concaténation "& ".

Est ce possible de le faire hors vba sous ecell 2003 ?

J'ai vu sous le forum la fonction vba :
Function Afficheformule(x)
Afficheformule = x.Formula
End Function

mais pb elle me renvoie par ex :
en i219 j'ai ÞCALER(action_s11;0;(X$155-11)*7;;)
en i234 j'ai = (AfficheFormule(I219)) et la valeur renvoyé e est
=OFFSET(action_s11,0,(X$155-11)*7,,)

Il faudrait ensuite que je supprime le début de la chaine et puis que
reconvertisse le tout en formule.

D'avance merci
cdlt






















1 2