Bonjour,
Voila j'aimerais vérifier que mon code FindNext dans une boucle FOR ne repasse pas sur la meme cellule.
Comment faire?
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.
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
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 : 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 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
Partager