OVH Cloud OVH Cloud

Evaluate

4 réponses
Avatar
poypoy
Bonjour,

c'est une question purement théorique vu que j'ai une solution qui marche,
mais j'aimerais bien trouvé une solution ( ca fait déjà 2 jours que j'esaie
de le faire sans y arriver ^^)

Alors voila, je voudrais comparer le nom de ma feuille avec d'autres string
que je connais pour que si elle est différentes de toutes les constantes
string que j'ai il fassent des schmilblicks.
La solution qui marche et de faire :
if feuil.name <> str1 and feuil.name <> str2... then

Bon comme j'en ai pas mal, c'est assez moche donc je me suis dit un petit or
va le rendre plus lisible. Mais la je coince :
pour le or, il me faut un evaluate dans lequel je glisse mon feuil.name,
qu'excel me traduit par le nom de la feuille sans les " " autour. Du coup, il
n'arrive pas à comparer : ie, evaluate("or(" & feuil.name &
"={""peuh"";""peuhh""})") donne
(or(peuh={"peuh";"peuhh"}) qui plante... Et j'ai beau mettre des " dans tous
les sens, impossible d'arriver au but !!
Ce qui est amusant c'est que si je remplace ""peuhh"" (dans la 2ème partie
du or) par un "" & feuil.name & "", ca marche, j'ai bien mon nom de feuille
entouré de cotes. Mais si je mets une double cote autour du feuil.name
initial, là j'obtiens or(" & feuil.name & "=...Excel me prends la partie au
milieu comme un text....
Haaaa les mystères d'excel ^^

Voila, si vous avez un peu de temps ou que vous connaissez la réponse,
n'hésitez pas, cela me tarabusque

Cordialement
Benjamin

4 réponses

Avatar
AV
Pour répondre directement à ta question, exemple de ficellage de chaînes :

varF = """" & ActiveSheet.Name & """"
MsgBox Evaluate("OR(" & varF & "=""Feuil1""," & varF & "=""Feuil2""," & varF &
"=""Feuil3"")")

Tu pourrais obtenir le même résultat avec :
MsgBox IsNumeric(Application.Match(ActiveSheet.Name, Array("Feuil1", "Feuil2",
"Feuil"), 0))

AV
Avatar
poypoy
Merci AV,

Des fois, je me dis que je ne devrais pas poser de questions, les réponses
tombant comme des couperets sur mes croyances en mes connaissances excel !

Je ne savais pas qu'il fallait 4 cotes. Bah, je le saurais maintenant ^^
Quand à l'autre méthode, elle marche effectivement tout aussi bien. Aprés
c'est juste une question de choix, ( et j'ai trop galéré sur l'evaluate pour
l'abandonner comme ca :-)

Cordialement
Benjamin
PS : quelle idée d'utiliser 4 cotes aussi !?!?!


Pour répondre directement à ta question, exemple de ficellage de chaînes :

varF = """" & ActiveSheet.Name & """"
MsgBox Evaluate("OR(" & varF & "=""Feuil1""," & varF & "=""Feuil2""," & varF &
"=""Feuil3"")")

Tu pourrais obtenir le même résultat avec :
MsgBox IsNumeric(Application.Match(ActiveSheet.Name, Array("Feuil1", "Feuil2",
"Feuil"), 0))

AV





Avatar
AV
Je ne savais pas qu'il fallait 4 cotes.


Ben c'est pas obligatoire car on pourrais écrire comme ça :

varF = ActiveSheet.Name
MsgBox Evaluate("OR(""" & varF & """=""Feuil1"",""" & varF & """=""Feuil2"","""
& varF & """=""Feuil1"")")

mais sortir qques guillemets de la chaîne à évaluer ça rend bcp plus limpide
!;-)

AV

Avatar
poypoy
Hey AV,

LOL et moi qui faisais or(" & """"" & varf....
Hum on va dire que je suis fatigué par mon week-end

Allez a plus
Benjamin


Je ne savais pas qu'il fallait 4 cotes.


Ben c'est pas obligatoire car on pourrais écrire comme ça :

varF = ActiveSheet.Name
MsgBox Evaluate("OR(""" & varF & """=""Feuil1"",""" & varF & """=""Feuil2"","""
& varF & """=""Feuil1"")")

mais sortir qques guillemets de la chaîne à évaluer ça rend bcp plus limpide
!;-)

AV