VBA - SOMME.SI.ENS - "Erreur de compilation : Incompatibilité de type"

Bonjour à tous,

Je cherche à comprendre pourquoi à l'exécution de ce bout de code, utilisé pour SOMME.SI.ENS :

''SOMME.SI.ENS

Dim plage_a_sommer As Long
Dim plage_de_critere_1 As String
Dim critere_1  As String
Dim MonResultat_2 As Long

plage_a_sommer = Sheets("Feuil1").Range("B1:B100")
plage_de_critere_1 = Sheets("Feuil1").Range("A1:A100")
critere_1 = "A"

MonResultat_2 = Application.WorksheetFunction.SumIfs(plage_a_sommer, plage_de_critere_1, critere_1)
MsgBox (MonResultat_2)

j'obtiens le message "Erreur de compilation : Incompatibilité de type"

Alors qu'en modifiant la variable MonResultat_2 pour ne plus utiliser les variables plage_à_sommer et plage_de_critère.

MonResultat_2 = Application.WorksheetFunction.SumIfs(Sheets("Feuil1").Range("B1:B100"), Sheets("Feuil1").Range("A1:A100"), critere_1)

alors cela fonctionne ...

Bonjour,

Incompatibilité de type survient lorsqu'on tente d'affecter des valeurs qui ne correspondent pas au type de la variable.

Tes variables sont mal déclarées :

- une plage de cellules est un objet de Type Range

- pour affecter un objet à une variable il faut utiliser Set

- l'objet Range appartient à l'objet Worksheet, éviter l'objet Sheet(xxx) qui n'a pas d'objet Range (il en hérite selon le cas).

Option Explicit
Sub Test()
Dim plage_a_sommer As Range
Dim plage_de_critere_1 As Range
Dim critere_1 As String
Dim MonResultat_2 As Long

    Set plage_a_sommer = Worksheets("Feuil1").Range("B1:B100")
    Set plage_de_critere_1 = Worksheets("Feuil1").Range("A1:A100")
    critere_1 = "A"

    MonResultat_2 = Application.WorksheetFunction.SumIfs(plage_a_sommer, plage_de_critere_1, critere_1)
    MsgBox (MonResultat_2)

End Sub

Merci beaucoup !!!

Cela fonctionne.

Merci de la précision de la réponse. Je ne savais pas non plus pour worksheets au lieu de sheets.
Je serai attentif pour ne plus me faire avoir :)

Rechercher des sujets similaires à "vba somme ens erreur compilation incompatibilite type"