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
merci de votre aide
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
Henri
Partager