[VBA] Evaluate sur la valeur d'une cellule [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
19 février 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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

Messages postés
3
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
19 février 2012

Bonjour,

Personne ne peut me dire pourquoi ce simple changement empêche mon code de fonctionner ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
3
Date d'inscription
jeudi 16 février 2012
Statut
Membre
Dernière intervention
19 février 2012

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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
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