Bonjour,

J'ai en effet un problème avec l'imbrication de mes boucles. J'essaie donc de créer un programme qui recherche quel élément parmi les exécutables de même nom est le plus récent, et de l'installer.. Alors attention, comme on me l'a fait remarquer, ça pique les yeux (âmes sensibles s'abstenir )

Le problème intervient au niveau de l'imbrication des deux boucle: Ce qui m'intéresse c'est que le while récupère la valeur du j qui s'incrémente, or quand on rentre dans le while, je perds totalement sa valeur (Le print m'affiche 0 , alors que la boucle for en est à j =1,2,3,4,5,6... enfin vous aurez compris). Du coup ma boucle while refait sans arrêt la même chose, 360 fois (c'est la valeur de mon i ).

Donc si vous avez des solutions à me proposer j'en serait ravie et surtout reconnaissante sachant que ça fait 1 jour que je galère ! Donc Merci d'avance

PS: Pour ceux qui auraient le temps ou l'envie de me montrer à quoi ressemblerait un programme différent qui fait la même chose ( fait par un pro quoi ) J'en serais ravie.

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Imports System.IO
Public Class Form1
 
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
 
 
 
        Dim i As Integer = 0
 
        For Each file As String In Directory.GetFiles("P:\CTRL_Projets\DTM_Repository", "*.exe", System.IO.SearchOption.AllDirectories)
 
 
            Dim lStr As String = file
            Dim lDossierNom As String = IO.Path.GetFileName(IO.Path.GetDirectoryName(lStr))
            Dim startIndex As Integer = 30
            Dim length As Integer = 20
            Dim substring As String = file.Substring(startIndex, length)
            Dim LaDate As Date = IO.File.GetLastWriteTime(file)
 
            i = i + 1
 
            ListBox2.Items.Add(LaDate)
            ListBox1.Items.Add(substring)
 
            ListBox5.Items.Add(lDossierNom)
            ListBox6.Items.Add(file)
 
 
 
        Next
 
 
 
 
        Dim nosame As String
        Dim k As Integer = 0
        Dim m As Integer = 0
        Dim j As Integer = m
        Dim nomentier As String = 0
        Dim value As String = ListBox1.Items.Item(j)
        Dim time As Date = ListBox2.Items.Item(j)
 
 
 
 
        For m = 0 To i
 
 
            While k < i
                ListBox7.Items.Add(j)
 
 
 
                Dim t1 As Date = ListBox2.Items.Item(j)
                Dim t2 As Date = ListBox2.Items.Item(k)
                Dim s1 As String = ListBox1.Items.Item(j)
                Dim s2 As String = ListBox1.Items.Item(k)
                Dim n1 As String = ListBox6.Items.Item(j)
                Dim n2 As String = ListBox6.Items.Item(k)
 
                s1 = value
                t1 = time
                n1 = nomentier
                ListBox3.Items.Add(nomentier)
                ListBox3.Items.Add(time)
 
 
                If String.Compare(s1, s2) = 0 Then
                    'Compare le premier substring au deuxième
 
                    If DateTime.Compare(t1, t2) < 0 Then
                        value = s2
                        nomentier = n2
                        time = t2
                        'Si t2 est plus jeune, il remplace la valeur du premier substring par le deuxième pour le comparer à son tour'
 
                    ElseIf DateTime.Compare(t1, t2) > 0 Then
                        value = s1
                        nomentier = n1
                        time = t1
                        't1 est plus jeune, donc on garde le même substring et on implémente k pour trouver un autre fichier plus jeune '
                    Else
                        value = s1
                        nomentier = n1
                        time = t1
 
                    End If
 
                ElseIf String.Compare(s1, s2) <> 0 Then
                    nosame = 0
                    value = s1
                    time = t1
                    nomentier = n1
 
                End If
                k = k + 1
                s1 = value
                t1 = time
                n1 = nomentier
 
 
 
 
            End While
 
 
            ListBox4.Items.Add(nomentier)
 
 
        Next
 
 
 
 
 
 
 
    End Sub
End Class