Accueil
Evaluate
Remplissage tableau 2 dimensions
Fonction renvoyant l'évaluation d'une
expression dans une cellule
Evaluate(expression)
La fonction Evaluate(expression) ou [expression]
donne la valeur d'une expression
x = Evaluate("(4+8)*6")
donne 72
x = [(4+8)*6]
donne 72
Générer des nombre de 1 à 25
a = Evaluate("row(1:25)")
MsgBox a(3, 1) -->3
Somme du champ D1:D5
x = Evaluate("SUM(D1:D5)")
x = [Sum(D1:D5)]
Nombre de jours ouvrés entre 1/1/2005 et 31/12/2005
x = [NB.JOURS.OUVRES("01/01/2005","31/12/2005")]
Nombre de jours ouvres entre 1/1/2005 et 31/12/2005
x = "NB.JOURS.OUVRES(""01/01/2005"",""31/12/2005"")"
z = Evaluate(x)
Nombre de jours ouvrés entre les dates de A1 et
B1
x = [NB.JOURS.OUVRES(A1,B1)]
Nombre de jours ouvrés entre la date du jour et
le 1er janvier 2006
fériés est le nom d'un champ contenant les
jours fériés
d = #1/1/2006#
f = Date
x = Evaluate("NB.JOURS.OUVRES(""" & d & ""","""
& f & """)")
d = #1/1/2008#
f = Date
z = Evaluate("NB.JOURS.OUVRES(""" & d & ""","""
& f & """,fériés)")
Date en A1 décalée de 3 mois
x = "MOIS.DECALER(""" & [A1] &
""",3)"
z = Evaluate(x)
Recherchev(A15;produit;2;Faux)
x = Evaluate("VLOOKUP(A15,produit,2,FALSE)")
If IsError(x) Then
MsgBox "Erreur"
Else
MsgBox x
End If
x = "souris"
z = Evaluate("VLOOKUP(" & Chr(34) & x & Chr(34)
& ",produit,2,FALSE)")
If IsError(z) Then
MsgBox "Erreur"
Else
MsgBox z
End If
Dans un autre classeur ouvert
x = [vlookup("toto",'[Sem45.xls]BD'!$A$2:$B$8,2,false)]
Sommeprod((Service="compta")*(statut="cadre")*Salaire))
x = [SumProduct((Service="compta")*(statut="cadre")*Salaire)]
Calcule dynamiquement SommeProd((Nom="Dupont")*(prenom="Jean")*Age)
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column = 1 Or Target.Column = 2) And Target.Count
= 1 Then
n = Cells(Target.Row, 1)
p = Cells(Target.Row, 2)
pos = Evaluate("Sumproduct((Nom="""
& n & """)*(prenom=""" & p &
""")*Age)")
If Not IsError(pos) Then
Cells(Target.Row, 3) = pos
End If
End If
End Sub
Age pour une date de naissance en A1
x = [datedif(A1,today(),"y")]
x = Evaluate("datedif(A1,today(),""y"")")
Nombre années/mois/jours entre 2 dates
DateDiff
Private Sub Ok
Me.TextBox3 = Evaluate("datedif(" & "datevalue("""
& cvDate(Me.TextBox1) & """)" & ",datevalue("""
& cvDate(Me.TextBox2) & """),""y"")")
Me.TextBox4 = Evaluate("datedif(" & "datevalue("""
& cvDate(Me.TextBox1) & """)" & ",datevalue("""
& cvDate(Me.TextBox2) & """),""ym"")")
Me.TextBox5 = Evaluate("datedif(" & "datevalue("""
& cvDate(Me.TextBox1) & """)" & ",datevalue("""
& cvDate(Me.TextBox2) & """),""md"")")
End Sub
Function cvDate(d)
p1 = InStr(d, "/")
P2 = InStr(p1 + 1, d, "/")
cvDate = Mid(d, p1 + 1, P2 - p1) & Left(d, p1) & Mid(d,
P2 + 1)
End Function
Nombre d'items numériques différents
avec critère
=NB(1/FREQUENCE(SI(date=DATE(2010;3;1);formes);formes))
valider avec maj+ctrl+entrée
En VBA:
n = [Count(1/FREQUENCY(If(date=DATE(2010,3,1),formes),formes))]
ou
d = "3/1/2010"
temp = "Count(1/FREQUENCY(If(date=DateValue(" & Chr(34)
& d & Chr(34) & "),formes),formes))"
n = Evaluate(temp)
Dates Formes
25/02/2010 4592
25/02/2010 4592
25/02/2010 4275
25/02/2010 4275
25/02/2010 4275
25/02/2010 4275
01/03/2010 4327
01/03/2010 4327
01/03/2010 4638
01/03/2010 4475
01/03/2010 4475
01/03/2010 4475
01/03/2010 4475
Remplissage d'un tableau
à 2 dimensions
Crée un tableau a(,) 4 lignes 3 colonnes
a = Evaluate("{1,2,3;4,5,6;7,8,9;10,11,12}")
MsgBox UBound(a, 1)
MsgBox UBound(a, 2)
ou
a = [{1,2,3;4,5,6;7,8,9;"aa","bb","cc"}]
MsgBox a(3, 1)
MsgBox a(4, 1)
Tableaux pré-remplis
a = Evaluate("Row(1:10)")
' tableau 2D rempli avec 1,2,3,4,10
b = Application.Transpose(Evaluate("Row(1:10)")) ' tableau
1D rempli avec 1,2,3,4,10
Fonction renvoyant l'évaluation
d'une expression dans une cellule
Une cellule
Function Eval(c)
Eval = Evaluate(Replace(c.Formula, ",", "."))
End Function
Un champ

Function EvalChamp(champ As Range)
temp = 0
For Each c In champ
If c <> "" Then temp
= temp + Evaluate(Replace(c.Formula, ",", "."))
Next c
EvalChamp = temp
End Function
Un champ multi-zones
L'appel de la fonction multi-zones se fait avec =EvalChampMZ((A1:A3;C1:C3))
Function EvalChampMZ(champ As Range)
temp = 0
For i = 1 To champ.Areas.Count
For j = 1 To champ.Areas(i).Count
If champ.Areas(i)(j) <>
"" Then
temp = temp + Evaluate(Replace(champ.Areas(i)(j).Formula,
",", "."))
End If
Next j
Next i
EvalChampMZ = temp
End Function
Evaluate matriciel
Retourne dans un tableau a() la concaténation de
la colonne A et la colonne C
a = Evaluate("=A2:A10&char(32)&C2:C10")
MsgBox a(1, 1)
Donne la somme des nombres d'une cellule séparés
par les caractères , ou espace.
Function sommeCel(c)
Application.Volatile
sommeCel = Evaluate(Replace(Replace(c, ",", "+"),
" ", "+"))
End Function
Recherche d'un prix avec 3 critères
Evaluate
3 critères
Sub Macro2()
Range("F13") = Evaluate("INDEX(prix,MATCH(1,(annee=A13)*(taille=B13)*(modele=C13),0))")
End Sub
Somme.Si.Ens sur plusieurs colonnes
SommeSiEns
Sub essai2()
T = "sumproduct(SUMIFS(offset(B2:b10,,column(a:c)-1),A2:A10,""x""))"
Cells(2, 10) = Evaluate(T)
End Sub
Sub essai3()
T = "sumproduct(SUMIFS(offset(B2:b10,,{0;1;2}),A2:A10,""x""))"
Cells(2, 10) = Evaluate(T)
End Sub
|