Sommeprod Annee Mois ne fonctionnent pas en VBA

Bonjour à tous,

Je sollicite humblement votre aide. J'ai un souci avec une formule : elle fonctionne très bien avec Excel mais quand je transpose en VBA (même en utilisant debug.print) j'ai un retour dans la cellule #valeur! au moment de l'exécution de la ligne sumproduct.

Je pense que j'ai bien déclaré mes variables et que la syntaxe est correcte, j'ai vérifié les formats des cellules (date, nombre, texte) ; j'ai testé avec et sans les plages déclarées.

Je suis agacée car je n'arrive pas à trouver, please...

Merci d'avance,

Très cordialement

Voici le code :

Option Explicit

Sub essai1()

Application.ScreenUpdating = False

Dim dFirst, dLast As Date, dl, dl1, M As Integer, A As Long, PlageDate, PlageU As Range

dl = Sheets("Indicateurs").Range("B" & Rows.Count).End(xlUp).Row

dLast = DateAdd("d", -1, CDate("1/" & Format(Date, "mm/yyyy")))

If Cells(dl, 2) <> dLast Then

Sheets("Indicateurs").Cells(dl + 1, 2) = dLast

Sheets("Indicateurs").Cells(dl + 1, 2).NumberFormat = "mmmm-yy;@"

A = Year(dLast)

M = Month(dLast)

'------------------------------------------------------------------------------------------------------------------------

'---------------------------------------------------Indicateurs en cours-------------------------------------------------

'------------------------------------------------------------------------------------------------------------------------

Workbooks.Open Filename:=ThisWorkbook.Path & "\5.9 DAC quater.xlsm"

With Sheets("")

.Range("H4").Copy

ThisWorkbook.Sheets("Indicateurs").Cells(dl + 1, 3).PasteSpecial xlPasteValues

.Range("N4").Copy

ThisWorkbook.Sheets("Indicateurs").Cells(dl + 1, 4).PasteSpecial xlPasteValues

.Range("M4").Copy

ThisWorkbook.Sheets("Indicateurs").Cells(dl + 1, 5).PasteSpecial xlPasteValues

End With

Workbooks("5.9 DAC quater.xlsm").Close False

'------------------------------------------------------------------------------------------------------------------------

'-------------------------------------------------Indicateurs en Archives------------------------------------------------

'------------------------------------------------------------------------------------------------------------------------

Workbooks.Open Filename:=ThisWorkbook.Path & "\Archives - Plan d'actions .xlsm"

dl1 = Sheets("-PDCA").Range("B" & Rows.Count).End(xlUp).Row

Set PlageDate = Range("K10:K" & dl1)

Set PlageU = Range("C10:C" & dl1)

With Sheets("-PDCA")

ThisWorkbook.Sheets("Indicateurs").Cells(dl + 1, 5).Value = Application.Evaluate("=SUMPRODUCT((Year(PlageDate)&Month(PlageDate)= A&M )*(PlageU=""WQ"")")

End With

Workbooks("Archives - Plan d'actions .xlsm").Close False

End If

Application.ScreenUpdating = True

End Sub

Bonjour,

A première vue, il faudrait tester ...

Application.Evaluate ("=SUMPRODUCT((Year(PlageDate)&Month(PlageDate)=" & A & M & " )*(PlageU=""WQ"")")

Bonjour James007,

Merci de m'avoir répondu. Malheureusement, j'ai toujours le même renvoi #valeur!.

Je reste patiente ; s'il y a d'autres suggestions, je suis preneuse.

A bientôt

Bonjour

Application.Evaluate ("=SUMPRODUCT((Year(PlageDate)=" & A & ")*(Month(PlageDate)=" & M & " )*(PlageU=""WQ"")")

Cordialement

Merci Amadéus de m'avoir mis sur la piste, il s'agit d'une incompatibilité entre les nombres, les dates et le texte. On est obligé de passer par une transformation en "nombre" pour que cela soit pris en compte : je fais une opération avec le "1*" !

J'ai dû retirer les variables plages pour alléger la génération d'erreurs.

J'ai modifié le code comme suit, pour ceux qui seraient intéressés à l'avenir

ThisWorkbook.Sheets("Indicateurs").Cells(dl + 1, 7).Value = Application.Evaluate("=SUMPRODUCT((1* Year(K10 :K" & dl1 & ")= " & A & ")*(1*Month(K10 :K" & dl1 & ")=" & M & ")*(1*(C10 :C" & dl1 & "=""WQ"")))")

Merci encore,

Très cordialement.

Rechercher des sujets similaires à "sommeprod annee mois fonctionnent pas vba"