Bonsoir Forum,

J'ai une liste de nombre sur la colonne A. J'ai fait un code qui crée sur la colonne B la liste sans doublon et sur la colonne C la somme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub list()
 
Dim i, j, k, compt, sum As Integer
 
compt = 0
 
For i = 1 To 22
 
    For j = 1 To i
 
        If Range("A" & i).Value <> Range("A" & j).Value Then 'je teste un nombre avec tous ses antécédants sur la liste
        Else
        compt = compt + 1 'si le nombre est égal à un antécédant j'incrémente le compteur
        End If
    Next
        If compt > 1 Then 'si le compteur est supérieur à 1, le nombre est donc déja dans la liste des antécédents et je fait rien
        Else 'sinon c'est un nouveau nombre et je l'ajoute dans la liste sans doublon
        k = k + 1
        Range("B" & k) = Range("A" & i) 'j'inscrit le nouveau nombre
        End If
        compt = 0
Next
 
'On calcule à present la somme de chaque élément
sum = 0
For i = 1 To k
    For j = 1 To 21
        If Range("A" & j).Value = Range("B" & i).Value Then 'je fais le test pour reperer tous les nombres égaux
        sum = sum + Range("A" & j).Value ' j'en fais la somme
        Else
        End If
    Next
 
    Range("C" & i).Value = sum 'j'inscrit la somme sur la colonne C
    sum = 0
Next
 
End Sub
Je voudrai savoir si on peut optimiser le code ou faire autrement en utilisant des fonctions en vba ? Je sais que ma liste s'arrête à la ligne 22 et je l'utilise dans ma boucle for. Est ce possible de trouver par un test le numéro de la dernière ligne ( une sorte de variable)?

Merci de votre aide !