VBA - Sumifs

Nenesandco

XLDnaute Nouveau
Bonjour à tous,


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 ! :rolleyes:

Merci beaucoup pour l'aide que vous pourrez m'apporter !
 

Pièces jointes

  • Fichier Test.xlsm
    20.2 KB · Affichages: 58
  • Fichier Test.xlsm
    20.2 KB · Affichages: 69
  • Fichier Test.xlsm
    20.2 KB · Affichages: 90

fanfan38

XLDnaute Barbatruc
Re : VBA - Sumifs

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

A+ François
 

Nenesandco

XLDnaute Nouveau
Re : VBA - Sumifs

Bonjour François,


En effet, je cachais quelque chose. :)

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.

Merci pour le code, je l'essaie de suite ! :)
 

Discussions similaires

Réponses
2
Affichages
693
Réponses
17
Affichages
2 K

Statistiques des forums

Discussions
312 304
Messages
2 087 061
Membres
103 447
dernier inscrit
DamD