Bonsoir à tous,
Je voudrais faire l'addition d'une valeur en fonction de 3 critères:
Le tableau est énorme (+200000lignes) donc je souhaiterais une solution par VBA, pour diminuer le temps de latence de la macro.
Je dispose d'une base de donnée "BDD" et d'une feuille "Données" ou je voudrais que les résultats s'affichent.
Je dispose de 3 critères:
- 2 sont fixes et sont rentrées en "Dur" dans la feuille "Données"
-1 et dynamique, c'est une liste qui peut avoir 2 comme 200 lignes, je voudrais que la macro scrute chaque lignes de la BDD afin de voir si les lignes concordent avec les critères et additionner toutes les valeurs des lignes ou les critères correspondent. Je cherche à rentrer cette valeur dans la cellule de droite de "Crit3".
Voici le code que j'ai commencé à faire, mais celui ne convient pas du tout car non seulement il ne garde pas en mémoire les anciennes valeurs afin de les additionner avec les nouvelles, mais en plus il fait défiler les lignes du tableau BDD avec les lignes du crit3.
Je n'arrive pas à résoudre ce problème:
Est ce que vous pouvez m'aider?
Si vous voulez un fichier pour une meilleur compréhension, je vais pouvoir le transmettre demain.
Merci
Je voudrais faire l'addition d'une valeur en fonction de 3 critères:
Le tableau est énorme (+200000lignes) donc je souhaiterais une solution par VBA, pour diminuer le temps de latence de la macro.
Je dispose d'une base de donnée "BDD" et d'une feuille "Données" ou je voudrais que les résultats s'affichent.
Je dispose de 3 critères:
- 2 sont fixes et sont rentrées en "Dur" dans la feuille "Données"
-1 et dynamique, c'est une liste qui peut avoir 2 comme 200 lignes, je voudrais que la macro scrute chaque lignes de la BDD afin de voir si les lignes concordent avec les critères et additionner toutes les valeurs des lignes ou les critères correspondent. Je cherche à rentrer cette valeur dans la cellule de droite de "Crit3".
Voici le code que j'ai commencé à faire, mais celui ne convient pas du tout car non seulement il ne garde pas en mémoire les anciennes valeurs afin de les additionner avec les nouvelles, mais en plus il fait défiler les lignes du tableau BDD avec les lignes du crit3.
Je n'arrive pas à résoudre ce problème:
VB:
Sub family()
Dim tabBDD
Dim wsBDD As Object
Dim wsResult As Object
Dim crit1, crit2, crit3
Dim cptBDD
Dim i As Integer
Set wsBDD = Worksheets("BDD") 'Base de données
Set wsResult = Worksheets("données") ' Feuille résultat final
With wsBDD
tabBDD = Range(.Cells(3, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 30)) ' Définition du tableau
End With
With wsResult
derlign = Cells(Cells.Columns.Count, 7).End(xlToLeft).Offset(0, 0).Row 'Dernière ligne de la liste du critére 3 à scrutée dans la BDD
For cptBDD = 1 To UBound(tabBDD, 1) 'Scrutation du tableau BDD
For i = 2 To derlign ' Liste du critère 3
crit1 = .Cells(1, 6) ' Critére 1
crit2 = .Cells(2, 6) 'Critère 2
crit3 = .Cells(i, 7) ' Critère 3
If (tabBDD(cptBDD, 23) = crit1) And (tabBDD(cptBDD, 1) = crit2) And (tabBDD(cptBDD, 24) = crit3) Then
Cells(i, 8) = Cells(i, 8) + tabBDD(cptBDD, 15) + tabBDD(cptBDD, 16) + tabBDD(cptBDD, 18) + tabBDD(cptBDD, 20)
End If
Next i
Next
End With
Set wsBDD = Nothing
Set wsResult = Nothing
End Sub
Est ce que vous pouvez m'aider?
Si vous voulez un fichier pour une meilleur compréhension, je vais pouvoir le transmettre demain.
Merci