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