Problème avc la fonction "EVALUATE"

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

Je progresse ! Maintenant, c'est du sérieux, je me lance dans le monde incommensurable d'"EVALUATE" et je sens que plus rien ne sera jamais pareil !
En attendant, plantages lamentables...

Pas toujours évident cette fonction, mais elle permet de résoudre des choses difficiles ou impossibles à résoudre sans elle et aussi de raccourcir singulièrement certaines procédures. Les capacités de cette fonction se lisent comme une proustitude ! Un seul problème, d'après ce que j'ai pu glaner à droite et à gauche, ce n'est pas une fonction qui s'exécute très rapidement (voir, à ce sujet ici : Evaluate - Most Powerful Command in VBA?).

Mon problème est simple.

J'ai une plage de chiffres qui va de A1 à A20.
Je veux faire (en VBA bien sûr) la somme de tous les chiffres de cette plage, et j'écris :
Dim x as Double
x = [Sum(A1:A20)] --> ça marche !

Je nomme maintenant la plage (A1:A20) "Lola", et j'écris :
Dim x as Double
x = [Sum(lola)] --> ça marche !

En fait, cette plage se trouve immédiatement à droite d'un tableau qui se nomme "TableauCF1".
Plutôt que de nommer la plage "A1:A20" "Lola" (au bout d'un moment on finit par avoir un nombre incensé de plages nommées...), comme, pour différentes raisons je suis un peu obligé de nommer néanmoins quelques plages dont le tableau "TableauCF1", je localise la plage "A1:A20" ainsi :
Dim plage as Range
Set plage = [TableauCF1].Offset(, 1) --> ça marche !

J'ai essayé :
x = [Sum(plage)] --> ça ne marche pas !
x = [Sum([plage])] --> ça ne marche pas !
x = Evaluate("Sum(plage)") --> ça ne marche pas !
x = Evaluate("Sum([plage])") --> ça ne marche pas !

Oui, au bout d'un moment on essaie n'importe quoi...

Merci à celui qui connaîtra le moyen de résoudre cette énigme.
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : Problème avc la fonction "EVALUATE"

Rebonjour Magic_Doctor,
Evaluate et les variables VBA ne font pas bon ménage !
Perso je me contenterais de x = [SUM(OFFSET(TableauCF1,,1))]
A+
Un petit exemple de scène de ménage

Code:
Sub Evaluate_Rech_Ligne()
  ' recherche n° ligne contenant 2 critères (...ou plusieurs)
  
  MsgBox [MATCH(1,(I2:I1000="TOTO")*(G2:G1000=2650),0)]
  
  'Avec variables
  A = "TOTO": B = 2650
  MsgBox Evaluate("MATCH(1,(I2:I1000=""" & A & """)*(G2:G1000=""" & B & """),0)")
  
End Sub

Le 2eme Msgbox plante ! Pourquoi ? Idem avec B = "2650"

Robert
 

Staple1600

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Re, Bonsoir Herdet

Code:
Sub Evaluate_Rech_LigneOK()
Dim a$, b, formule$
' recherche n° ligne contenant 2 critères (...ou plusieurs)
MsgBox [=MATCH(1,(I2:I1000="TOTO")*(G2:G1000=2650),0)]
'Avec variables
a = "TOTO": b = 2650
formule = "=MATCH(1,(I2:I1000=" & Chr(34) & a & Chr(34) & ")*(G2:G1000=" & b & "),0)"


MsgBox Evaluate(formule) 'test ok


MsgBox Evaluate("=MATCH(1,(I2:I1000=" & Chr(34) & a & Chr(34) & ")*(G2:G1000=" & b & "),0)") 'test ok


MsgBox ["=MATCH(1,(I2:I1000=" & Chr(34) & a & Chr(34) & ")*(G2:G1000=" & b & "),0)"] 'test pas ok
End Sub


PS: Le numéro de ligne renvoyé n'est pas le bon.
J'ai testé avec TOTO en I6 et 2650 en G6
Les MsgBox affichent 5
 

Modeste geedee

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Bonsour®
Re, Bonsoir Si...



Il suffit pour cela d'utiliser la balise BBCODE suivante: [NOPARSE]
Code:
[/NOPARSE]Copier ici le code VBA[NOPARSE]
[/NOPARSE]
:rolleyes: je dirais même plus
[NOPARSE]
VB:
[/NOPARSE]Copier ici le code VBA[NOPARSE]
[/NOPARSE]


VB:
Sub Evaluate_Rech_Ligne()
 ' recherche n° ligne contenant 2 critères (...ou plusieurs) 
 MsgBox [MATCH(1,(I2:I1000="TOTO")*(G2:G1000=2650),0)]
  'Avec variables 
A = "TOTO": B = 2650
MsgBox Evaluate("MATCH(1,(I2:I1000=""" & A & """)*(G2:G1000=""" & B & """),0)")  
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Bonsoir Modeste Geedee

Re, Bonsoir Si...
Tu peux aussi celle que j'évoque dans ma signature.

C'est pas que j'avais suggéré aussi ;) ?
(c'est vrai qu'il manquait un verbe pour que ce soit compréhensible ;) désolé )

EDITION: Merci Si... mais je m'adressais à Modeste Geedee dans ma citation ci-dessus ;)
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

re

Si... tu y tiens :p
VB:
Sub Evaluate_Rech_Ligne()
  'recherche n° ligne contenant 2 critères (...ou plusieurs)
  MsgBox [MATCH(1,(I2:I1000="TOTO")*(G2:G1000=2650),0)]+1
  'Avec variables
  a = "TOTO": b = 2650
  MsgBox Evaluate("=MATCH(1,(I2:I1000=" & """" & a & """" & ")*(G2:G1000=" & b & "),0)")+1
End Sub
 
Dernière édition:

Herdet

Nous a quitté
Repose en paix
Re : Problème avc la fonction "EVALUATE"

re

Si... tu y tiens :p
VB:
Sub Evaluate_Rech_Ligne()
  'recherche n° ligne contenant 2 critères (...ou plusieurs)
  MsgBox [MATCH(1,(I2:I1000="TOTO")*(G2:G1000=2650),0)]+1
  'Avec variables
  a = "TOTO": b = 2650
  MsgBox Evaluate("=MATCH(1,(I2:I1000=" & """" & a & """" & ")*(G2:G1000=" & b & "),0)")+1
End Sub
Bonjour,
Evaluate fonctionne mais donne un mauvais résultat : le + 1 à la fin est de trop !

Si... tu y tiens :p Non, pas vraiment mais c'est simplement de la curiosité:)
 

Staple1600

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Bonjour

Herdet:
Faut croire que ma signature est rarement lue alors ;) (voir en dessous de mon Cordialement ;) )
(Cela fait pourtant un bail qu'elle fait la retape pour l'highlight ;))
Tu peux même varier les plaisirs donc les couleurs
en utilisant soit:[NOPARSE]
VB:
[/NOPARSE]macro[NOPARSE]
[/NOPARSE]
VB:
Sub Subs()
Dim a As Range
'REM
Msgbox "toto"
End Sub
ou en utilisant classiquement [NOPARSE]
VB:
[/NOPARSE]macro[NOPARSE]
[/NOPARSE]
VB:
Sub Subs()
Dim a As Range
'REM
Msgbox "toto"
End Sub
 

Modeste geedee

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Bonsour® Bobby
Salut l'ami,
... en plus le code est en couleurs comme dans l'éditeur !
C'est super pour la présentation et la compréhension

Je vais étudier de prés les balises d' XLD
Bonne journée
Robert

a posteriori la balise [NOPARSE]
Code:
 [/NOPARSE]admet également un parametre


exemple :
[NOPARSE][CODE=VBA]
......................
ici ton code Vba
......................
[/NOPARSE]
l'avantage par rapport à la balise [NOPARSE][HIGHLIGHT][/NOPARSE]
est que l'icone # de la balise [NOPARSE]
Code:
[/NOPARSE] est à disposition dans l'éditeur avancé
il ne reste qu' à ajouter =VBA
[ATTACH]879692.vB[/ATTACH]
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    13.7 KB · Affichages: 54
  • Capture.JPG
    Capture.JPG
    13.7 KB · Affichages: 53
  • Capture.JPG
    Capture.JPG
    13.7 KB · Affichages: 39

Staple1600

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Bonjour Modeste Geedee

Merci pour cette astuce

Dans ce cas, il ne devrait pas être trop compliqué de modifier cette balise pour que le [NOPARSE]
Code:
[/NOPARSE]
soit la valeur par défaut quand on clique sur [FONT=arial black][B]#[/B][/FONT] ,  non ?

DavidXLD qu'en penses-tu?
 

Herdet

Nous a quitté
Repose en paix
Re : Problème avc la fonction "EVALUATE"

Bonjour

Herdet:
Faut croire que ma signature est rarement lue alors ;) (voir en dessous de mon Cordialement ;) )
(Cela fait pourtant un bail qu'elle fait la retape pour l'highlight ;))
Tu peux même varier les plaisirs donc les couleurs
en utilisant soit:[NOPARSE]
VB:
[/NOPARSE]macro[NOPARSE]
[/NOPARSE]
Toutes mes/nos excuses mais on ne prend plus assez de temps pour bien lire tout le contenu d'un message si bien qu'on en voit rarement à la fin ... mais peut être qu'en mettant ce message en en-tête ...? ;):confused:

Bon, il faut lire le mode d'emploi des balises sur Liste des balises BB - Excel Downloads Forums et se mettre vite fait au HTML.
.. même de la vidéo et du Flash, le pied :)

Robert
 

Modeste geedee

XLDnaute Barbatruc
Re : Problème avc la fonction "EVALUATE"

Bonsour®
Bonjour

Faut croire que ma signature est rarement lue alors ;) (voir en dessous de mon Cordialement ;) )
(Cela fait pourtant un bail qu'elle fait la retape pour l'highlight ;))

:cool:depuis ceci :
https://www.excel-downloads.com/threads/au-secours-david.180411/
ou j'y proposais le terme réduire,
d'autres se sont allégrement posés en interdicteurs et gardiens de l'ordre...
j'utilise ceci dans mon profil : Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    19.1 KB · Affichages: 68
  • Capture.JPG
    Capture.JPG
    19.1 KB · Affichages: 61

Discussions similaires

Statistiques des forums

Discussions
312 571
Messages
2 089 809
Membres
104 278
dernier inscrit
LENZY