Bonjour,
Données : : deux tableaux tab1 (2 Colonnes : A et B) et tab2 (2 Colonnes : B et C), qui ont une colonne en commun (Colonne B).
Algorithme :
Si la colonne C est vide et si colonne B de tab 2 = colonne B de tab1 alors incrémenter de 1, sinon ne pas incrémenter.
Résultat :
Grâce à un code que j'ai pu développer sur vba, j'arrive à avoir le nombre de lignes lorsque je limite le nombre de boucle.
Problème
Dans mon code(ci-dessous), j'utilise une double boucle, on fixe la 1er ligne de tab2 et on cherche dans tout tab1;
puis on va à la 2e ligne de tab2 et on cherche dans tout le tab1, ect...
Sachant que chaque tableaux fait 15.000 lignes, cela crée 15.000*15.000 opérations ce qui fait planter excel.
voici le code proposé :
Sub test()
max_tab_1 = 15000
max_tab_2 = 15000
n = 0
Application.EnableEvents = False
Application.ScreenUpdating = False
For i = 2 To max_tab_1
For j = 2 To max_tab_2
If Worksheets("tab_2").Cells(i, 2) = "" Then
If Worksheets("tab_2").Cells(i, 1) = Worksheets("tab_1").Cells(j, 2) Then
n = n + 1
End If
End If
Next
Next
Worksheets("resultat").Cells(1, 1) = n
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Pouvez vous me proposer s'il vous plait, une solution plus optimisée ou une autre manière de faire ?
j'ai essayé avec les tableaux croisée dynamique sauf qu'au niveau de la colonne B des deux tableaux il y a des doublons, donc excel ne permet pas de crée des tcd.
merci
cdlt