J'espère que vous pourrez m'aider. En pièce jointe, mon fichier test.
Je cherche à remonter une quantité précise en fonction d'une date d'expédition : quelles quantités ont été expédiées entre le 1er janvier 2013 et le 31 décembre 2013 ? Quelles quantités ont été expédiées entre le 1er janvier 2014 et le 31 décembre 2014 ?
Voici le code que j'ai utilisé :
Code:
Sub test_calcul()
Dim x As Integer
For x = 8 To 9
Cells(3, x + 1) = Application.WorksheetFunction.SumIfs(Columns(5), Columns(7), "expéditions", Columns(1), ">=" & Cells(1, x + 1), Columns(1), "<=" & Cells(2, x + 1))
Next
End Sub
Je ne comprends pas vraiment pourquoi mon code me renvoie 0 en résultat. J'imagine qu'il s'agit d'un problème avec les dates mais je ne trouve.
Avez-vous une solution ?
PS : je débute tout juste avec VBA. J'espère que vous serez indulgents !
Merci beaucoup pour l'aide que vous pourrez m'apporter !
Bonjour
Pourquoi utiliser le vba? (sauf si tu nous cache quelquechose)
avec la fonction =SOMME.SI.ENS
mets en e9: =SOMME.SI.ENS(E2:E7;G2:G7;"expéditions";a2:a7;">=01/01/2013 ";a2:a7;"<=31/12/2013")...
avec une macro on peut faire
Sub essai()
Dim x As Integer
Range("e10").ClearContents
For x = 2 To 8
If Cells(x, 7).Value = "expéditions" Then
mavar = Cells(x, 1).Value
If Cells(x, 1).Value >= CDate("01/01/2013") And Cells(x, 1).Value <= CDate("31/12/2013") Then
Range("e10").Value = Range("e10").Value + Cells(x, 5).Value
End If
End If
Next
End Sub
Je m'explique, techniquement, le fichier existe déjà et j'utilise d'ailleurs la fonction SOMME.SI.ENS.
Mais mon fichier est très lourd : je ne compte plus le nombre de cellules où j'ai des fonctions RECHERCHEV et SOMME.SI.ENS ...
Dès que je modifie une donnée, il lui faut plus de 30 secondes pour afficher le résultat.
Du coup, j'essaie avec VBA d'alléger un peu mon fichier : certaines données n'ont pas besoin d'être recalculée systématiquement.
Je ne sais pas si je suis sur la bonne voie mais je teste.