Hello world !

je sollicite encore une fois votre aide sur un problème dont voici l’énoncé :

j'ai une feuille Excel avec 5 colonnes ( A,B,C,D,E).
Pour une ligne i , je souhaite affecter la valeur "0" à la colonne E , mais si et seulement si la valeur de cette colonne A est unique dans la colonne A. sinon la colonne A vaut "-1".

Note: avec l'hypothèse que la colonne A est triée par ordre croissant.

Mon astuce est que je teste si la cellule active est différente de la cellule du bas alors je considère que la cellule active est unique donc la colonne E = "0" sinon E ="-1".
Le problème c'est que si dans une colonne A j'ai 3 valeurs identiques, le dernier élément identique est comparé avec un l’élément suivant donc forcément , mon code le traitement comme unique et lui affecte la la valeur 0. comme sur la figure ci-dessous

En bref:

je souhaite souhaite que si la valeur de la colonne A est unique alors la colonne E ="0" sinon E="-1".

A | B | C | D | E
------------------------------------------------------
a | _ | _ | _ | -1
a | _ | _ | _ | -1
a | _ | _ | _ | 0
c | _ | _ | _ | 0




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
Sub Test()
 
  numrows = Range("A2", Range("A2").End(xlDown)).Rows.Count
 
    With Range("A2")
         .Select
         .NumberFormat = "@"
   End With   
 
Range("E2").Select
 
    ' si cellule active différente de celle du bas
    For i = 1 To numrows
        If ActiveCell.Offset(0, -4).Value <> ActiveCell.Offset(1, -4).Value Then
            ActiveCell.NumberFormat = "@"
            ActiveCell.Value = "0"
        Else
            ActiveCell.NumberFormat = "@"
            ActiveCell.Value = "-1"
        End If
        ActiveCell.Offset(1, 0).Select
    Next
 
    With Range("E2")
        .Select
        .NumberFormat = "@"
    End With
 
    Next
End Sub
merci de votre aide

Henri