Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
Que représente la valeur A1 ? A2 ? nCpt1 ?
Donne un exemple réel comment tu passes tes valeurs à la fonction
x = MasseCrédit(A1, A2, nCpt1)
N.B- Ce n'est JAMAIS une bonne idée d'utiliser comme nom d'un paramètre
ou d'une variable, une chaîne de caractère identique (A1, A2) à ce qui
pourrait
être une adresse de cellule d'une feuille de calcul.
Ta ligne de déclaration de ta fonction
Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
Que représente la valeur A1 ? A2 ? nCpt1 ?
Donne un exemple réel comment tu passes tes valeurs à la fonction
x = MasseCrédit(A1, A2, nCpt1)
N.B- Ce n'est JAMAIS une bonne idée d'utiliser comme nom d'un paramètre
ou d'une variable, une chaîne de caractère identique (A1, A2) à ce qui
pourrait
être une adresse de cellule d'une feuille de calcul.
"HD" a écrit dans le message de groupe de discussion :
hrbmss$19i1$
Alors... Lorsque je lance :
Sub test()
Dim MaDate As Date
MaDate = DateSerial(2008, 6, 30) 'La date que tu veux !
MsgBox
Evaluate("SUMIFS(Sheet1!AO2:AO11414,Sheet1!AY2:AY11414,I16,Sheet1!AE2:AE11414,""<="
& Format(MaDate, "m/d/yy") & """)")
End Sub
J'obtiens bien l'affichage de la valeur attendue... mais lorsque je lance
:
1 Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
2 On Error Resume Next
3 Application.EnableEvents = False
4 Dim i As Long
5 Dim Da2 As Date
6 Application.Volatile False
7
8 i = 1
9 If IsDate(a2) Then
10 Da2 = CDate(a2)
11 MasseCrédit = Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit)
&
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & "," &
Sheets(NomD).Columns(ColDate) & ",""<=" & Format(Da2, "m/d/yy") & """)")
12 MsgBox "ColCpt1=" & ColCpt1 & vbCrLf & "NomD=" & NomD & vbCrLf &
"ColCredit=" & ColCredit & vbCrLf & "ColDate=" & ColDate & vbCrLf & "Da2="
&
Format(Da2, "m/d/yy")
13 MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) &
","
& Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & "," &
Sheets(NomD).Columns(ColDate) & ",""<=" & Format(Da2, "m/d/yy") & """)")
14 End If
15 Application.EnableEvents = True
16 End Function
Je n'ai pas la MasseCrédit qui se calcul (ligne 11), toutes mes variables
qui s'affichent et me montrent que tout est bien initialisé (ligne 12), et
l'affichage de mon Evaluate ne se fait même pas (ligne 13)...
--
@+
HD
Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
Que représente la valeur A1 ? A2 ? nCpt1 ?
Donne un exemple réel comment tu passes tes valeurs à la fonction
x = MasseCrédit(A1, A2, nCpt1)
N.B- Ce n'est JAMAIS une bonne idée d'utiliser comme nom d'un paramètre
ou d'une variable, une chaîne de caractère identique (A1, A2) à ce qui
pourrait
être une adresse de cellule d'une feuille de calcul.
Ta ligne de déclaration de ta fonction
Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
Que représente la valeur A1 ? A2 ? nCpt1 ?
Donne un exemple réel comment tu passes tes valeurs à la fonction
x = MasseCrédit(A1, A2, nCpt1)
N.B- Ce n'est JAMAIS une bonne idée d'utiliser comme nom d'un paramètre
ou d'une variable, une chaîne de caractère identique (A1, A2) à ce qui
pourrait
être une adresse de cellule d'une feuille de calcul.
"HD" <hd@anti.spam.fr> a écrit dans le message de groupe de discussion :
hrbmss$19i1$1@saria.nerim.net...
Alors... Lorsque je lance :
Sub test()
Dim MaDate As Date
MaDate = DateSerial(2008, 6, 30) 'La date que tu veux !
MsgBox
Evaluate("SUMIFS(Sheet1!AO2:AO11414,Sheet1!AY2:AY11414,I16,Sheet1!AE2:AE11414,""<="
& Format(MaDate, "m/d/yy") & """)")
End Sub
J'obtiens bien l'affichage de la valeur attendue... mais lorsque je lance
:
1 Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
2 On Error Resume Next
3 Application.EnableEvents = False
4 Dim i As Long
5 Dim Da2 As Date
6 Application.Volatile False
7
8 i = 1
9 If IsDate(a2) Then
10 Da2 = CDate(a2)
11 MasseCrédit = Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit)
&
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & "," &
Sheets(NomD).Columns(ColDate) & ",""<=" & Format(Da2, "m/d/yy") & """)")
12 MsgBox "ColCpt1=" & ColCpt1 & vbCrLf & "NomD=" & NomD & vbCrLf &
"ColCredit=" & ColCredit & vbCrLf & "ColDate=" & ColDate & vbCrLf & "Da2="
&
Format(Da2, "m/d/yy")
13 MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) &
","
& Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & "," &
Sheets(NomD).Columns(ColDate) & ",""<=" & Format(Da2, "m/d/yy") & """)")
14 End If
15 Application.EnableEvents = True
16 End Function
Je n'ai pas la MasseCrédit qui se calcul (ligne 11), toutes mes variables
qui s'affichent et me montrent que tout est bien initialisé (ligne 12), et
l'affichage de mon Evaluate ne se fait même pas (ligne 13)...
--
@+
HD
Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
Que représente la valeur A1 ? A2 ? nCpt1 ?
Donne un exemple réel comment tu passes tes valeurs à la fonction
x = MasseCrédit(A1, A2, nCpt1)
N.B- Ce n'est JAMAIS une bonne idée d'utiliser comme nom d'un paramètre
ou d'une variable, une chaîne de caractère identique (A1, A2) à ce qui
pourrait
être une adresse de cellule d'une feuille de calcul.
Ta ligne de déclaration de ta fonction
Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
Que représente la valeur A1 ? A2 ? nCpt1 ?
Donne un exemple réel comment tu passes tes valeurs à la fonction
x = MasseCrédit(A1, A2, nCpt1)
N.B- Ce n'est JAMAIS une bonne idée d'utiliser comme nom d'un paramètre
ou d'une variable, une chaîne de caractère identique (A1, A2) à ce qui
pourrait
être une adresse de cellule d'une feuille de calcul.
"HD" a écrit dans le message de groupe de discussion :
hrbmss$19i1$
Alors... Lorsque je lance :
Sub test()
Dim MaDate As Date
MaDate = DateSerial(2008, 6, 30) 'La date que tu veux !
MsgBox
Evaluate("SUMIFS(Sheet1!AO2:AO11414,Sheet1!AY2:AY11414,I16,Sheet1!AE2:AE11414,""<="
& Format(MaDate, "m/d/yy") & """)")
End Sub
J'obtiens bien l'affichage de la valeur attendue... mais lorsque je lance
:
1 Public Function MasseCrédit(a1 As Range, a2 As String, nCpt1 As String)
2 On Error Resume Next
3 Application.EnableEvents = False
4 Dim i As Long
5 Dim Da2 As Date
6 Application.Volatile False
7
8 i = 1
9 If IsDate(a2) Then
10 Da2 = CDate(a2)
11 MasseCrédit = Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit)
&
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & "," &
Sheets(NomD).Columns(ColDate) & ",""<=" & Format(Da2, "m/d/yy") & """)")
12 MsgBox "ColCpt1=" & ColCpt1 & vbCrLf & "NomD=" & NomD & vbCrLf &
"ColCredit=" & ColCredit & vbCrLf & "ColDate=" & ColDate & vbCrLf & "Da2="
&
Format(Da2, "m/d/yy")
13 MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) &
","
& Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & "," &
Sheets(NomD).Columns(ColDate) & ",""<=" & Format(Da2, "m/d/yy") & """)")
14 End If
15 Application.EnableEvents = True
16 End Function
Je n'ai pas la MasseCrédit qui se calcul (ligne 11), toutes mes variables
qui s'affichent et me montrent que tout est bien initialisé (ligne 12), et
l'affichage de mon Evaluate ne se fait même pas (ligne 13)...
--
@+
HD
A ) si le paramètre A2 est une date dans une cellule, pourquoi utiliser
A2 As String dans la déclaration de ta fonction au lieu de As Range ?
B ) Dans ta fonction, plusieurs variables sont non renseignées comme
ColCredit, ColCpt1, ColDate ... Quelles sont leurs valeurs ? Comment
les renseignes-tu ?
C ) Quel rôle ces lignes de code : "Application.EnableEvents = True" doit
jouer dans la fonction ? Une fonction a pour but de retourner un
résultat d'opération. La valeur retournée peut être une chaîne de
caractère, un nombre, une valeur booléenne ou une valeur d'erreur.
D ) La gestion d'erreur de ce genre : On Error Resume Next n'est pas
vraiment
appropriée pour une fonction personnalisée. De toute façon, si la
fonction
ne réussit pas à évaluer la proposition, elle va retourner elle-même
une valeur
d'erreur. Par contre, cette ligne de code peut masquer une erreur de
programmation qui n'a rien à voir avec l'objectif de la fonction et là,
tu auras
de la difficulté à trouver pourquoi ta fonction ne renvoie pas la
valeur désirée.
Lors de tes tests, utilise des points d'arrêt dès le début de la
fonction... et
utilise
le pas à pas pour déterminer la ligne de code problème.
MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) & _
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & _
"," & Sheets(NomD).Columns(ColDate) & ",""<=" & _
Format(Da2, "m/d/yy") & """)")
A ) si le paramètre A2 est une date dans une cellule, pourquoi utiliser
A2 As String dans la déclaration de ta fonction au lieu de As Range ?
B ) Dans ta fonction, plusieurs variables sont non renseignées comme
ColCredit, ColCpt1, ColDate ... Quelles sont leurs valeurs ? Comment
les renseignes-tu ?
C ) Quel rôle ces lignes de code : "Application.EnableEvents = True" doit
jouer dans la fonction ? Une fonction a pour but de retourner un
résultat d'opération. La valeur retournée peut être une chaîne de
caractère, un nombre, une valeur booléenne ou une valeur d'erreur.
D ) La gestion d'erreur de ce genre : On Error Resume Next n'est pas
vraiment
appropriée pour une fonction personnalisée. De toute façon, si la
fonction
ne réussit pas à évaluer la proposition, elle va retourner elle-même
une valeur
d'erreur. Par contre, cette ligne de code peut masquer une erreur de
programmation qui n'a rien à voir avec l'objectif de la fonction et là,
tu auras
de la difficulté à trouver pourquoi ta fonction ne renvoie pas la
valeur désirée.
Lors de tes tests, utilise des points d'arrêt dès le début de la
fonction... et
utilise
le pas à pas pour déterminer la ligne de code problème.
MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) & _
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & _
"," & Sheets(NomD).Columns(ColDate) & ",""<=" & _
Format(Da2, "m/d/yy") & """)")
A ) si le paramètre A2 est une date dans une cellule, pourquoi utiliser
A2 As String dans la déclaration de ta fonction au lieu de As Range ?
B ) Dans ta fonction, plusieurs variables sont non renseignées comme
ColCredit, ColCpt1, ColDate ... Quelles sont leurs valeurs ? Comment
les renseignes-tu ?
C ) Quel rôle ces lignes de code : "Application.EnableEvents = True" doit
jouer dans la fonction ? Une fonction a pour but de retourner un
résultat d'opération. La valeur retournée peut être une chaîne de
caractère, un nombre, une valeur booléenne ou une valeur d'erreur.
D ) La gestion d'erreur de ce genre : On Error Resume Next n'est pas
vraiment
appropriée pour une fonction personnalisée. De toute façon, si la
fonction
ne réussit pas à évaluer la proposition, elle va retourner elle-même
une valeur
d'erreur. Par contre, cette ligne de code peut masquer une erreur de
programmation qui n'a rien à voir avec l'objectif de la fonction et là,
tu auras
de la difficulté à trouver pourquoi ta fonction ne renvoie pas la
valeur désirée.
Lors de tes tests, utilise des points d'arrêt dès le début de la
fonction... et
utilise
le pas à pas pour déterminer la ligne de code problème.
MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) & _
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1 & _
"," & Sheets(NomD).Columns(ColDate) & ",""<=" & _
Format(Da2, "m/d/yy") & """)")
MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) & _
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1)
Ne m'affiche rien... Le SUMIFS doit planter... alors que si j'utilise:
MasseCrédit =
Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
Là j'obtiens bien un résultat...
C'est comme si un argument du SUMIFS n'était pas correct... Peut on donner
dans un Evaluate SUMIFS en argument une colonne située sur une autre
feuille?
MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) & _
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1)
Ne m'affiche rien... Le SUMIFS doit planter... alors que si j'utilise:
MasseCrédit =
Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
Là j'obtiens bien un résultat...
C'est comme si un argument du SUMIFS n'était pas correct... Peut on donner
dans un Evaluate SUMIFS en argument une colonne située sur une autre
feuille?
MsgBox Evaluate("SUMIFS(" & Sheets(NomD).Columns(ColCredit) & _
"," & Sheets(NomD).Columns(ColCpt1) & "," & nCpt1)
Ne m'affiche rien... Le SUMIFS doit planter... alors que si j'utilise:
MasseCrédit =
Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
Là j'obtiens bien un résultat...
C'est comme si un argument du SUMIFS n'était pas correct... Peut on donner
dans un Evaluate SUMIFS en argument une colonne située sur une autre
feuille?
Voici un exemple maison pour illustrer la saisie avec "Evaluate"
Évidemment, tu dois adapter le nom de la feuille "Sheet1" pour
celle de ton application ainsi que les références des plages.
à partir de là, il y a des variantes.... il s'agit d'avoir un peu de
patience !
'-------------------------------------
Public Function MasseCrédit()
Dim Da2 As Date, Adr As String, nCpt1 As String
Dim Adr1 As String, Adr2 As String, X As String
Dim Y As Long
Adr = "Sheet1!" & Range("A1:A10").Address
Adr1 = "Sheet1!" & Range("B1:B10").Address
Adr2 = "Sheet1!" & Range("C1:C10").Address
nCpt1 = "Sheet1!" & Range("D1").Address
Da2 = Date
Y = Evaluate("SUMIFS(" & Adr & _
"," & Adr1 & "," & nCpt1 & _
"," & Adr2 & ",""<=" & _
Format(Date, "m/d/yy") & """)")
End Function
'-------------------------------------
"HD" a écrit dans le message de groupe de discussion :
hrc490$1epg$
Voilà ma nouvelle fonction...
Public Function MasseCrédit(a1 As String, a2 As String, nCpt1 As String)
Dim i As Long
Dim Da2 As Date
Application.Volatile False
If IsDate(a2) Then
Da2 = CDate(a2)
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1, Sheets(NomD).Columns(ColDate), "<="
&
Format(Da2, "mm/dd/yy"))
Else
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
End If
End Function
--
@+
HD
Voici un exemple maison pour illustrer la saisie avec "Evaluate"
Évidemment, tu dois adapter le nom de la feuille "Sheet1" pour
celle de ton application ainsi que les références des plages.
à partir de là, il y a des variantes.... il s'agit d'avoir un peu de
patience !
'-------------------------------------
Public Function MasseCrédit()
Dim Da2 As Date, Adr As String, nCpt1 As String
Dim Adr1 As String, Adr2 As String, X As String
Dim Y As Long
Adr = "Sheet1!" & Range("A1:A10").Address
Adr1 = "Sheet1!" & Range("B1:B10").Address
Adr2 = "Sheet1!" & Range("C1:C10").Address
nCpt1 = "Sheet1!" & Range("D1").Address
Da2 = Date
Y = Evaluate("SUMIFS(" & Adr & _
"," & Adr1 & "," & nCpt1 & _
"," & Adr2 & ",""<=" & _
Format(Date, "m/d/yy") & """)")
End Function
'-------------------------------------
"HD" <hd@anti.spam.fr> a écrit dans le message de groupe de discussion :
hrc490$1epg$1@saria.nerim.net...
Voilà ma nouvelle fonction...
Public Function MasseCrédit(a1 As String, a2 As String, nCpt1 As String)
Dim i As Long
Dim Da2 As Date
Application.Volatile False
If IsDate(a2) Then
Da2 = CDate(a2)
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1, Sheets(NomD).Columns(ColDate), "<="
&
Format(Da2, "mm/dd/yy"))
Else
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
End If
End Function
--
@+
HD
Voici un exemple maison pour illustrer la saisie avec "Evaluate"
Évidemment, tu dois adapter le nom de la feuille "Sheet1" pour
celle de ton application ainsi que les références des plages.
à partir de là, il y a des variantes.... il s'agit d'avoir un peu de
patience !
'-------------------------------------
Public Function MasseCrédit()
Dim Da2 As Date, Adr As String, nCpt1 As String
Dim Adr1 As String, Adr2 As String, X As String
Dim Y As Long
Adr = "Sheet1!" & Range("A1:A10").Address
Adr1 = "Sheet1!" & Range("B1:B10").Address
Adr2 = "Sheet1!" & Range("C1:C10").Address
nCpt1 = "Sheet1!" & Range("D1").Address
Da2 = Date
Y = Evaluate("SUMIFS(" & Adr & _
"," & Adr1 & "," & nCpt1 & _
"," & Adr2 & ",""<=" & _
Format(Date, "m/d/yy") & """)")
End Function
'-------------------------------------
"HD" a écrit dans le message de groupe de discussion :
hrc490$1epg$
Voilà ma nouvelle fonction...
Public Function MasseCrédit(a1 As String, a2 As String, nCpt1 As String)
Dim i As Long
Dim Da2 As Date
Application.Volatile False
If IsDate(a2) Then
Da2 = CDate(a2)
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1, Sheets(NomD).Columns(ColDate), "<="
&
Format(Da2, "mm/dd/yy"))
Else
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
End If
End Function
--
@+
HD
Voici un exemple maison pour illustrer la saisie avec "Evaluate"
Évidemment, tu dois adapter le nom de la feuille "Sheet1" pour
celle de ton application ainsi que les références des plages.
à partir de là, il y a des variantes.... il s'agit d'avoir un peu de
patience !
'-------------------------------------
Public Function MasseCrédit()
Dim Da2 As Date, Adr As String, nCpt1 As String
Dim Adr1 As String, Adr2 As String, X As String
Dim Y As Long
Adr = "Sheet1!" & Range("A1:A10").Address
Adr1 = "Sheet1!" & Range("B1:B10").Address
Adr2 = "Sheet1!" & Range("C1:C10").Address
nCpt1 = "Sheet1!" & Range("D1").Address
Da2 = Date
Y = Evaluate("SUMIFS(" & Adr & _
"," & Adr1 & "," & nCpt1 & _
"," & Adr2 & ",""<=" & _
Format(Date, "m/d/yy") & """)")
End Function
'-------------------------------------
"HD" a écrit dans le message de groupe de discussion :
hrc490$1epg$
Voilà ma nouvelle fonction...
Public Function MasseCrédit(a1 As String, a2 As String, nCpt1 As String)
Dim i As Long
Dim Da2 As Date
Application.Volatile False
If IsDate(a2) Then
Da2 = CDate(a2)
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1, Sheets(NomD).Columns(ColDate), "<="
&
Format(Da2, "mm/dd/yy"))
Else
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
End If
End Function
--
@+
HD
Voici un exemple maison pour illustrer la saisie avec "Evaluate"
Évidemment, tu dois adapter le nom de la feuille "Sheet1" pour
celle de ton application ainsi que les références des plages.
à partir de là, il y a des variantes.... il s'agit d'avoir un peu de
patience !
'-------------------------------------
Public Function MasseCrédit()
Dim Da2 As Date, Adr As String, nCpt1 As String
Dim Adr1 As String, Adr2 As String, X As String
Dim Y As Long
Adr = "Sheet1!" & Range("A1:A10").Address
Adr1 = "Sheet1!" & Range("B1:B10").Address
Adr2 = "Sheet1!" & Range("C1:C10").Address
nCpt1 = "Sheet1!" & Range("D1").Address
Da2 = Date
Y = Evaluate("SUMIFS(" & Adr & _
"," & Adr1 & "," & nCpt1 & _
"," & Adr2 & ",""<=" & _
Format(Date, "m/d/yy") & """)")
End Function
'-------------------------------------
"HD" <hd@anti.spam.fr> a écrit dans le message de groupe de discussion :
hrc490$1epg$1@saria.nerim.net...
Voilà ma nouvelle fonction...
Public Function MasseCrédit(a1 As String, a2 As String, nCpt1 As String)
Dim i As Long
Dim Da2 As Date
Application.Volatile False
If IsDate(a2) Then
Da2 = CDate(a2)
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1, Sheets(NomD).Columns(ColDate), "<="
&
Format(Da2, "mm/dd/yy"))
Else
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
End If
End Function
--
@+
HD
Voici un exemple maison pour illustrer la saisie avec "Evaluate"
Évidemment, tu dois adapter le nom de la feuille "Sheet1" pour
celle de ton application ainsi que les références des plages.
à partir de là, il y a des variantes.... il s'agit d'avoir un peu de
patience !
'-------------------------------------
Public Function MasseCrédit()
Dim Da2 As Date, Adr As String, nCpt1 As String
Dim Adr1 As String, Adr2 As String, X As String
Dim Y As Long
Adr = "Sheet1!" & Range("A1:A10").Address
Adr1 = "Sheet1!" & Range("B1:B10").Address
Adr2 = "Sheet1!" & Range("C1:C10").Address
nCpt1 = "Sheet1!" & Range("D1").Address
Da2 = Date
Y = Evaluate("SUMIFS(" & Adr & _
"," & Adr1 & "," & nCpt1 & _
"," & Adr2 & ",""<=" & _
Format(Date, "m/d/yy") & """)")
End Function
'-------------------------------------
"HD" a écrit dans le message de groupe de discussion :
hrc490$1epg$
Voilà ma nouvelle fonction...
Public Function MasseCrédit(a1 As String, a2 As String, nCpt1 As String)
Dim i As Long
Dim Da2 As Date
Application.Volatile False
If IsDate(a2) Then
Da2 = CDate(a2)
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1, Sheets(NomD).Columns(ColDate), "<="
&
Format(Da2, "mm/dd/yy"))
Else
MasseCrédit > Application.WorksheetFunction.SumIfs(Sheets(NomD).Columns(ColCredit),
Sheets(NomD).Columns(ColCpt1), nCpt1)
End If
End Function
--
@+
HD