Bonjour à tous
J'ai une formule qui marche dans une cellule, mais je galère à la faire marcher dans le VBA :
Erreur de type : c'est certainement un message d'erreur erroné, mais quoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Dim Formule As String Dim Plage1 As Range Dim Plage2 As Range Dim PlageValeur As Range Dim NomFeuille As String ' Formule qui fonctionne dans une cellule : ' =SOMMEPROD(((D5:D200="Forfait")*1)*((B5:B200="L1-1.11")*1)*((I5:I200))) Set Plage1 = FeuillePasseL01.Range(FeuillePasseL01.Cells(5, 4), FeuillePasseL01.Cells(200, 4)) Set Plage2 = FeuillePasseL01.Range(FeuillePasseL01.Cells(5, 2), FeuillePasseL01.Cells(200, 2)) Set PlageValeur = FeuillePasseL01.Range(FeuillePasseL01.Cells(5, I), FeuillePasseL01.Cells(200, I)) NomFeuille = "'" & FeuillePasseL01.Name & "'!" Formule = "SumProduct(" & _ "((" & NomFeuille & Plage1.Address & " = " & Chr(34) & "Forfait" & Chr(34) & ") * 1) * " & _ "((" & NomFeuille & Plage2.Address & " = " & Chr(34) & "L1-1.11" & Chr(34) & ") * 1) ) * " & _ "(" & NomFeuille & PlageValeur.Address & "))" Debug.Print Formule Stop ' SumProduct((('Passé factu SGP L1'!$D$5:$D$200 = "Forfait") * 1) * (('Passé factu SGP L1'!$B$5:$B$200 = "L1-1.11") * 1) * ('Passé factu SGP L1'!$I$5:$I$200)) Facture = Evaluate(Formule) ' Essai précédent Facture = WorksheetFunction.SumProduct( _ ((NomFeuille & Plage1.Address = "Forfait") * 1) * _ ((NomFeuille & Plage2.Address = "L1-1.11") * 1) * _ (NomFeuille & PlageValeur.Address))
A l'origine les deux textes étaient des variables, que j'ai mis en dur pour comprendre. I vaut 7.
J'ai essayé plein de trucs, ' ou ", * ou ;, ... systématique : erreur de type.
Partager