Bonjour à tous,
A partir d'une colonne I :
1300
1320
1380
1560
1600
2000
3000
je dois classer ces quantités, en 2 partis (colonne J, et L) :
-dans la colonne J, je dois avoir toutes les quantités ayant moins de 60 de différence entre soit son précédent, soit son suivant.
- dans la colonne L, je dois avoir toutes celles qui ne respectent pas cette contrainte.
Je dois donc avoir ce résultat :
J L
1300 2000
1320 3000
1380
1560
1600
pour cela, je fais cette macro :
Cette macro fait bien un trie, cependant, elle ne fonctionne pas pour le 3000
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 Public Sub sort() Dim i As Long Dim j As Long Dim l As Long i = 3 j = 6 l = 6 Sheet2.Range("k6:v200").ClearContents While Sheet2.Cells(i, 1) <> "" If ((Cells(i + 1, 7) - Cells(i, 7)) <= 60) Or ((Cells(i, 7) - Cells(i - 1, 7)) <= 60) Then Sheet2.Cells(j, 11) = Sheet2.Cells(i, 1) Sheet2.Cells(j, 12) = Sheet2.Cells(i, 3) Sheet2.Cells(j, 13) = Sheet2.Cells(i, 4) Sheet2.Cells(j, 14) = Sheet2.Cells(i, 5) Sheet2.Cells(j, 15) = Sheet2.Cells(i, 7) Sheet2.Cells(j, 16) = Sheet2.Cells(i, 9) j = j + 1 Else Sheet2.Cells(l, 17) = Sheet2.Cells(i, 1) Sheet2.Cells(l, 18) = Sheet2.Cells(i, 3) Sheet2.Cells(l, 19) = Sheet2.Cells(i, 4) Sheet2.Cells(l, 20) = Sheet2.Cells(i, 5) Sheet2.Cells(l, 21) = Sheet2.Cells(i, 7) Sheet2.Cells(l, 22) = Sheet2.Cells(i, 9) l = l + 1 End If i = i + 1 Wend End Sub
elle me donne ce résultat :
J L
1300 2000
1320
1380
1560
1600
3000
Car elle considère que la cellule suivant 3000 est égal à 0, donc 0-3000, est bien inférieur à 60. Alors qu'elle ne devrait pas y etre étant donnée que 3000-1600 > 60.
je suis novice dans vba excel, je pense qu'il y a une solution simple, mais je ne la trouve pas !!!
merci d'avance
Partager