Boucle interminable
Bonjour,
Je suis vraiment débutant en VBA. J'essaye de créer un programme mais une partie me cause vraiment beaucoup de problème. J'ai testé les fonctions une par une et il n'y a pas de soucis par contre quand je fais des appels dans une boucle la variable i reste identique une fois passé la ligne 8 du code. Par contre la première condition (ligne 7) marche très bien sans la ligne (8).
J'éspère que j'ai été assez clair dans mes explications Je serai vraiment très reconaissant si vous pouvez me débloquer sur ce sujet. Voici ce que j'ai fait :
1 Sub sari()
2 Sheets(1).Select
3 Dim i As Long
4 counter = ActiveSheet().UsedRange.Rows.Count
5 i = 1
6 Do While i <= counter
7 If Cells(i, 1).Interior.Color = 65535 Then
8 If var_mi(numClient(i)) = False Then
9 copier (i)
10 MsgBox "Buradayim"
11 End If
12 End If
13 i = i + 1
14 Loop
15 End Sub
16 Function numClient(satir As Long) As Long
17'Renvoi le numero de client
18 Sheets(1).Select
19 While (Cells(satir, 1) = "")
20 satir = satir - 1
21 Wend
22 numClient = Cells(satir, 1).Value
23 End Function
24 Function var_mi(musNo As Long) As Boolean
25'Renvoi true si c'est déja incrementé dans la feuille Summary
26 Sheets("Summary").Select
27 Dim k As Long
28 k = 1
29 While (Cells(k, 1) <> "" Or Cells(k, 2) <> "" Or Cells(k, 3) <> "" Or Cells(k + 1, 1) <> "" Or Cells(k + 1, 2) <> "" Or Cells(k + 1, 3) <> "")
30 k = k + 1
31 Wend
32 For l = 1 To k
33 If Cells(l, 1).Value = musNo Then
34 var_mi = True
35 Sheets(1).Select
36 Exit Function
37 End If
38 Next
39 Sheets(1).Select
40 End Function
41 Sub copier(z As Long)
42 For m = 1 To ActiveSheet().UsedRange.Rows.Count
43 If Cells(m, 1).Value = numClient(z) Then
44 Dim j As Integer
45 j = m
46 While (Cells(j, 1) <> "" Or Cells(j, 2) <> "" Or Cells(j, 3) <> "")
47 j = j + 1
48 Wend
49 Range(Cells(m, 1), Cells(j, 17)).Select
50 Application.CutCopyMode = False
51 Selection.Copy
52 Sheets("Summary").Select
53 Dim k As Integer
54 k = 1
55 While (Cells(k, 1) <> "" Or Cells(k, 2) <> "" Or Cells(k, 3) <> "" Or Cells(k + 1, 1) <> "" Or Cells(k + 1, 2) <> "" Or Cells(k + 56 1, 3) <> "")
57 k = k + 1
58 Wend
59 Cells(k + 1, 1).Select
60 ActiveSheet.Paste
61 Sheets(1).Select
62 Exit For
63 End If
64 Next
65 End SubSalut Elyious,
Prends de suite la bonne habitude de joindre un fichier (nettoyé de ses données confidentielles) avec des explications claires et complètes quant au déroulé de ton code et, éventuellement, une feuille détaillant le résultat espéré.
A+