VBA problème de syntaxe de SumIf avec gauche

bonsoir tout le monde

J'ai un souci avec ce code

 Sub test()
Dim DerLColA As Long, DerLColB As Long, Mavariable As String, Result, Result1
DerLColA = Cells(Rows.Count, 6).End(xlUp).Row ' dernière ligne de la colonne f
DerLColB = Cells(Rows.Count, 7).End(xlUp).Row ' dernière ligne de la colonne g
Mavariable = Left(Range("A1").Value , 3)' 'recherche
Result = Application.SumIf(Left(Range("F1:F" & DerLColA), 3), Mavariable, Range("G1:G" & DerLColB)) 'Ta formule
'Range("B1") = Result
End Sub

merci de bien vouloir m'aider.

Salut llemezo,

c'est quoi le soucis et ca bloque sur quelle ligne?

sinon un petit fichier test non?

à te relire

il bloque su cette liqgne

Result = Application.SumIf(Left(Range("F1:F" & DerLColA), 3), Mavariable, Range("G1:G" & DerLColB)) 'Ta formule

et affiche erreur exécution 13

Je croix que le problème se trouve sur la parti ou j'ai souligné

Bonjour,

Une première réponse.

Sumif implique que les 2 plages soient de même dimensions

Cdlt.

Sub test()
Dim lastRow As Long, myValue As String, rng As Range, rng2 As Range, Result As Double
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
        myValue = Left(.Cells(1).Value, 3)
        Set rng = .Cells(6).Resize(lastRow)
        Set rng2 = .Cells(7).Resize(lastRow)
        Result = WorksheetFunction.SumIf(rng, myValue, rng2)
        .Cells(2).Value = Result
    End With
End Sub

j'ai testé votre code Jean-Eric mais je ne recherche pas sa comme résultat

pour cette exemple ci joint le résultat est 5 au lieu de 1

MERCI

page

Re,

Une mise à jour.

Cdlt.

Sub Test()
Dim lastRow As Long, myValue As String, tbl As Variant, Result As Double, i As Long
    With ActiveSheet
        lastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
        myValue = Left(.Cells(1).Value, 3)
        tbl = .Cells(6).Resize(lastRow, 2)
        For i = LBound(tbl) To UBound(tbl)
            If Left(tbl(i, 1), 3) = myValue Then Result = Result + tbl(i, 2)
        Next i
        .Cells(2).Value = Result
    End With
End Sub

MERCI Jean-Eric

c'est ce que je voulais avoir; peut tu m'expliquer ton code afin que je puisse l’adapter si besoin; sur tout comment tu a fait pour ne pas écrire Cells(7)

Re,

Quelques explications.

Cdlt.

Sub Test()
'Déclaration des variables
Dim lastRow As Long, myValue As String, tbl As Variant, Result As Double, i As Long
    With ActiveSheet
        'Dernière ligne non vide colonne 6 (F)
        lastRow = .Cells(.Rows.Count, 6).End(xlUp).Row
        'Valeur de référence
        myValue = Left(.Cells(1).Value, 3)
        'Mise sous forme de tableau (array) de la plage F1:G8 (dans l'exemple)
        'Cells(6)=Cells(1,6)=F1
        tbl = .Cells(6).Resize(lastRow, 2)
        'Pour chaque élément du tableau (tbl(i,1)=colonne 6 ; tbl(i,2)=colonne 7)
        For i = LBound(tbl) To UBound(tbl)
            If Left(tbl(i, 1), 3) = myValue Then Result = Result + tbl(i, 2)
        Next i
        'Restitution du résulat dans la feuille de calcul
        .Cells(2).Value = Result
    End With
End Sub
Rechercher des sujets similaires à "vba probleme syntaxe sumif gauche"