Somme Si Ens en VBA

Bonjour à tous,

Je vous sollicite car j'ai un tableau qui s'étend sur A2:H386298, sur lequel je souhaite réaliser un somme.si.ens.

Jusque là tout va bien, je maitrise la formule sur Excel sauf que le nombre de lignes à traiter fait buguer le fichier.

Je voudrais donc passer par vba, et c'est là que ça se complique pour moi.

Voici mon code actuel, je vous remercie d'avance de vous pencher sur mon cas et de bien vouloir m'indiquer ce qui cloche.

Merci à vous !

Sub Silence1()
Dim derLigne As Long
derLigne = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To derLigne
t = WorksheetFunction.SumIfs(Range("F & i : F & derLigne"), Range("B & i : B & derLigne"), Range("G & i"))
Cells(i, 7) = Evaluate(t)
Next
End Sub

Bonjour,

Tu as une erreur dans le nom de tes ranges. La position de tes guillemets fait que tout est interprété comme un nom, et pas comme des variables.

Pour mieux comprendre, voilà un petit script que tu peux tester :

Sub ComprendreGuillemets()

Nom = "Pedro"
i = 22

MsgBox Nom & i
MsgBox "Nom" & i
MsgBox "Nom & i"

End Sub

En clair, c'est :

Range("F" & i & ":F" & derLigne)
'et pas :
Range("F & i : F & derLigne")

Bonjour Pedro et merci pour ta réponse,

J'ai modifié les guillemets comme spécifié dans ton message mais je fais maintenant face à une erreur de compilation au niveau du " : " entre les F..

Merci à toi

Bonjour Pedro et merci pour ta réponse,

J'ai modifié les guillemets comme spécifié dans ton message mais je fais maintenant face à une erreur de compilation au niveau du " : " entre les F..

Merci à toi

Peux-tu transmettre ton dernier code VBA testé et m'en dire un peu plus sur le message d'erreur et sur la ligne surlignée en jaune ?

Si tu pouvais fournir un fichier représentatif et anonymisé, ce serait top.

Voici un fichier test, l'erreur se situe au niveau de la ligne 7.

Merci Pedro

24testsomme.xlsm (19.98 Ko)

Tu as mal recopié ma correction. Tes ":" devraient être entre guillemets et il manque un "&" entre ta variable i et ce ":" (voir correction ci-dessous).

Attention aussi aux feuilles à laquelle se rattache chaque Range. J'ai modifié l'écriture de sorte que les Range qui commencent par "." sont rattachés à "Feuil1", les Range rattachés à "Feuil2" sont clairement écrit. Comme ça, pas besoin d'activer ou sélectionner une feuille, il suffit de préciser la feuille dans le code.

Evaluate est inutile, tu peux directement écrire le résultat dans la cellule.

Sub Silence1()
Dim derLigne As Long, i As Long
derLigne = Cells(Rows.Count, 1).End(xlUp).Row
With Sheets("Feuil1")
    For i = 2 To derLigne
        MsgBox ("F" & i)
        Sheets("Feuil2").Cells(i, 7).Value = WorksheetFunction.SumIfs(.Range("F" & i & ":F" & derLigne), .Range("B" & i & ":B" & derLigne), Sheets("Feuil2").Range("G" & i))
    Next i
End With
End Sub

Super tout fonctionne merci Pedro !!

Rechercher des sujets similaires à "somme ens vba"