Bonjour,
Voila j'aimerais vérifier que mon code FindNext dans une boucle FOR ne repasse pas sur la meme cellule.
Comment faire?
Version imprimable
Bonjour,
Voila j'aimerais vérifier que mon code FindNext dans une boucle FOR ne repasse pas sur la meme cellule.
Comment faire?
tu prends l'argument row et column de ton find puis tu boucles tant que les deux ne sont pas les mêmes.
Bonjour,
J'ai fais cela mais dès que la valeur se répète + de 2 fois cela pose problème.
montre ton code
Code:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52 'boucle sur la colonne A For i = 1 To 1000 If Range("A" & i) <> "" Then 'Cherche la valeur de B dans la colonne P Set rg = Range("P1:P200").Find(Range("C" & i).Value) If rg Is Nothing Then 'Ajoute si pas trouvé idest = Range("P65536").End(xlUp).Row + 1 'P = CAI Range("P" & idest) = Range("C" & i) 'R = date Range("R" & idest) = Range("B" & i) 'Q = volume Range("Q" & idest).Value = Range("H" & i).Value 'S = qantité Range("S" & idest).Value = Range("J" & i).Value Else rg.Activate For j = 1 To 5 If Range("B" & i) > datemaxi And ActiveCell.Offset(0, 2) > datemaxi Then ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value Exit For Else If Range("B" & i) <= datemaxi And Range("B" & i) = ActiveCell.Offset(0, 2) Then ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value Exit For Else veriflig = ActiveCell.Row verifcol = ActiveCell.Columns(ActiveCell.Columns.Count).Column Range("P:P").FindNext(After:=ActiveCell).Activate If ActiveCell.Row = veriflig And ActiveCell.Columns(ActiveCell.Columns.Count).Column = verifcol Then 'Ajoute si pas trouvé idest = Range("P65536").End(xlUp).Row + 1 'P = CAI Range("P" & idest) = Range("C" & i) 'R = date Range("R" & idest) = Range("B" & i) 'Q = volume Range("Q" & idest).Value = Range("H" & i).Value 'S = qantité Range("S" & idest).Value = Range("J" & i).Value Exit For End If End If End If Next j End If End If Next i
Bonjour gigalia
Il faut mémoriser la première occurence trouvée par FIND pour pouvoir la comparer avec celles trouvées par FindNext.
Cordialement.
Docmarti.
Code:
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 Else Set premiere = rg rg.Activate For j = 1 To 5 If Range("B" & i) > datemaxi And ActiveCell.Offset(0, 2) > datemaxi Then ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value Exit For Else If Range("B" & i) <= datemaxi And Range("B" & i) = ActiveCell.Offset(0, 2) Then ActiveCell.Offset(0, 1).Value = ActiveCell.Offset(0, 1).Value + Range("H" & i).Value ActiveCell.Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value + Range("J" & i).Value Exit For Else veriflig = ActiveCell.Row verifcol = ActiveCell.Columns(ActiveCell.Columns.Count).Column Set pp = Range("P:P").FindNext(After:=ActiveCell) If premiere.Address = pp.Address Then Exit For pp.Activate If ActiveCell.Row = veriflig And ActiveCell.Columns(ActiveCell.Columns.Count).Column = verifcol Then
http://www.developpez.net/forums/d13...e/#post7495019
il est possible de l'adapter à tes besoin.
Merci
Bonjour
si tu te contente d'utiliser le model en exemple dans l'aide de l'éditeur VBA
tu constatera que la boucle s'arrête des la 2eme occurrence identique trouver en terme d'adresse de cellule
je ne vois pas ou est ton problème?