[VBA] Evaluate sur la valeur d'une cellule

Résolu
EvaSympa Messages postés 3 Date d'inscription jeudi 16 février 2012 Statut Membre Dernière intervention 19 février 2012 - 16 févr. 2012 à 08:35
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 20 févr. 2012 à 00:25
Bonjour à tous,

J'ai un problème avec Evaluate.

La ligne suivante fonctionne :

xyz = Evaluate("MAX((" & maplage.Address & "=""fff"")*column(" & maplage.Address & "))")

Mais à la place de comparer avec fff, je veux comparer avec la chaîne de caractère contenue dans une cellule.

J'ai essayé plusieurs choses dont la ligne suivante notamment, mais cela ne fonctionne pas :

xyz = Evaluate("MAX((" & maplage.Address & "= Cells(1, 10).Value ) * Column(" & maplage.Address & "))")

Avez-vous une solution à ce problème ? Dans la suite j'aimerai remplacer fff par la valeur contenue dans une cellule variable. Mais chaque chose en son temps ... d'abord faisons la fonctionner avec une cellule fixe me dis-je



Voici le code actuel qui fonctionne :

Sub Macro()

Dim xyz As Integer

Set maplage = Range(Cells(1, 1), Cells(1, 9))

xyz = Evaluate("MAX((" & maplage.Address & "=""fff"")*column(" & maplage.Address & "))")

MsgBox xyz

End Sub


Merci d'avance à tous ceux qui prendront le temps de m'aider.

Eva

6 réponses

EvaSympa Messages postés 3 Date d'inscription jeudi 16 février 2012 Statut Membre Dernière intervention 19 février 2012
16 févr. 2012 à 13:11
Bonjour,

Personne ne peut me dire pourquoi ce simple changement empêche mon code de fonctionner ?
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2012 à 13:20
Bonjour,
Pourquoi n'y-a-t-il pas foule se pressant au portillon pour te répondre ?
Peut-être parce qu'il te suffit d'un tout petit test et d'un peu de jugeote, pour comprendre et réparer :
Je te suggère celui-ci, très "parlant", qui aurait du être ton premier réflexe de développeur :
Dim maplage As Range
Column = 3
Set maplage = Range("A1:B100")
Cells(1, 10) = "fff"
  toto = "MAX((" & maplage.Address & "=""fff"")*column(" & maplage.Address & "))"
 titi = "MAX((" & maplage.Address & "= Cells(1, 10).Value ) * Column(" & maplage.Address & "))"
  MsgBox toto & vbCrLf & titi

Allons, allons ...
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 févr. 2012 à 13:28
Bon...
Ma sieste m'attend et je vais te proposer un autre test ===>> regarde et tâche d'analyser et comprendre le propos de ces deux petits tests à 4 sous espagnols :
Dim maplage As Range
Column = 3
Set maplage = Range("A1:B100")
Cells(1, 10) = "fff"
  toto = "MAX((" & maplage.Address & "=""fff"")*column(" & maplage.Address & "))"
 titi = "MAX((" & maplage.Address & "= Cells(1, 10).Value ) * Column(" & maplage.Address & "))"
  MsgBox toto & vbCrLf & titi

Questions :
1) pourquoi n'as-tu pas les mêmes réflexes que les miens ?
2) quand tu achètes une paire de chaussures, que fais-tu ? tu la choisis au hasard ? Tu n'essayes pas ?
Et si elle te fait mal au pied : tu n'en cherches pas la raison ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
EvaSympa Messages postés 3 Date d'inscription jeudi 16 février 2012 Statut Membre Dernière intervention 19 février 2012
19 févr. 2012 à 21:47
Bonjour,
Avant tout merci d'avoir pris le temps d'apporter une réponse.
Certes je n'ai surement pas certains réflexes de programmeur car je suis encore débutante en VBA. Et crois moi que c'est la première fois que je poste sur un forum car justement je cherche à comprendre. Et jusqu'à maintenant j'arrivais toujours à me dépatouiller.
Ensuite, je suis peut-être idiote car je n'ai compris ce qu'apportait ton code. Ca affiche les formules ...
Dans le code qui fonctionne que j'ai mis dans le premier poste, si tu mets fff dans la colonne 5 de la ligne A par exemple, alors la macro détecte le fff et affiche 5. Ce qui signifie j'ai trouvé fff et il se trouve dans la colonne 5.
Je veux bien que tu m'expliques ce qui peux m'aider dans ton code ... Car encore un fois, je ne poste jamais sans avoir cherché auparavant ...
Merci d'avance en tous cas
Eva
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 févr. 2012 à 21:59
où est donc ton problème de compréhension ?
si ceci :
La ligne suivante fonctionne :

xyz = Evaluate("MAX((" & maplage.Address & "=""fff"")*column(" & maplage.Address & "))")

et que tu veux remplacer "fff" ====>>

ceci
xyz = Evaluate("MAX((" & maplage.Address & "= Cells(1, 10).Value ) * Column(" & maplage.Address & "))")
sera également vrai pour remplacer "fff" par la valeur de la cellule cells(1,10)
C'était là conclusion logique (sans même parler de code) de l'examen des tests que je t'avais proposés pour t'éclairer !
Tu te noies vite dans un verre d'eau
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
20 févr. 2012 à 00:25
oups !
Excuse-moi.
C'est moi qui me suis trompé dans ma proposition du deuxième test (mauvais copié/collé ===>> et identique au 1er !)
Il était celui-ci, le 2ème test :
Dim maplage As Range
Column = 3
Set maplage = Range("A1:B100")
Cells(1, 10) = "fff"
  toto = "MAX((" & maplage.Address & "=""fff"")*column(" & maplage.Address & "))"

 titi = "MAX((" & maplage.Address & "=""" & Cells(1, 10).Value & """)*Column(" & maplage.Address & "))"
  MsgBox toto & vbCrLf & titi


et donc : ===>>

xyz = Evaluate("MAX((" & maplage.Address & "=""" & Cells(1, 10).Value & """)*Column(" & maplage.Address & "))")
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous