Bonjour,

J'ai un petit problème avec un script qui affiche les logins et mot de passe dans une invite de commande par rapport à des noms et prénoms dans un fichier texte.

Voici le code :

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
Imports FonctionsVB
Module Module1
 
    Structure S_Utilisateur
        Dim Login As String
        Dim MP As String
        Dim Nom As String
        Dim Prenom As String
    End Structure
 
    'Sub Main()
    'MonUtilisateur As S_Utilisateur
    'MonUtilisateur = CreStructureUtilisateur("toto", "titi")
    'AfficheUtilisateur(MonUtilisateur)
    'Console.ReadLine()
    ' End Sub
 
    'Sub Main()
    'Dim l_Nbutil As Integer
    ' Dim Monutil As S_Utilisateur
    'Dim i As Integer
    'Dim Montableau() As S_Utilisateur
    ' Montableau = CreTabUtilisateur("C:\Users\Kévin\Documents\VisualBasic\TPprocedure\mdp.txt", l_Nbutil)
    ' For i = 0 To l_Nbutil - 1
    'Monutil = Montableau(i)
    'AfficheUtilisateur(Monutil)
    ' Next
    'End Sub
 
 
    Sub Main()
        Dim pNbUtil As Integer
        Dim MonTableau() As S_Utilisateur               'déclaration d'un tableau de type s_utilisateur
        Dim i As Integer                                'déclaration d'une variable de type entier
 
        MonTableau = CreTabUtilisateur("C:\Users\Kévin\Documents\VisualBasic\TPprocedure\test.txt", pNbUtil)
        'le tableau reçoit le chemin du fichier en entrée et le NB d'utilisateur en sortie
 
 
        For i = 0 To TailleTableau(MonTableau) - 1
            AfficheUtilisateur(MonTableau(i))
        Next
        'pour i de 0 à la taille du tableau, on appelle la procédure  affiche utilisateur pour afficher nom, login, mdp
 
        Console.ReadLine()
 
    End Sub
 
 
    ' Procédure affichant le login, le nom et le prénom de l'utilisateur dans la console
    Sub AfficheUtilisateur(ByVal pUtil As S_Utilisateur)
        Console.WriteLine(" Prénom : " & pUtil.Prenom)
        Console.WriteLine(" Nom : " & pUtil.Nom)
        Console.WriteLine(" Login : " & pUtil.Login)
        Console.WriteLine(" Mot de passe : " & pUtil.MP)
    End Sub
 
    'Function CreTabUtilisateur(ByVal PcheminFichier As String) As S_Utilisateur
    'Dim MonFichier As Fichier
    'Dim I As Integer
    'I = 0
    'Dim TabUtil(999) As S_Utilisateur
    'While FinFichier(MonFichier) = False
    'Dim Maligne As String
    'Maligne = LireLigne(MonFichier)
    'Dim Montableau() As String
    'Montableau = DecoupeChaine(Maligne, ";")
    'Dim MonUtilisateur As S_Utilisateur
    'MonUtilisateur = CreStructureUtilisateur(Montableau(0), Montableau(1))
    'TabUtil(I) = MonUtilisateur
    'I = I + 1
    'End While
    'FermerFichier(MonFichier)
    'Return TabUtil
    'End Function
 
    Function CreTabUtilisateur(ByVal PcheminFichier As String, ByRef pNbUtil As Integer) As S_Utilisateur() ' Passage en paramètre de Pcheminfichier en entrée et pNbUtil en sortie
 
        Dim l_fichier As Fichier ' Déclaration de l_fichier en tant que Fichier
        l_fichier = OuvrirFichier(PcheminFichier, "l") ' Ouverture du fichier en lecture
        Dim tableutil(999) As S_Utilisateur ' Déclaration du tableau ( - de 1000 lignes ) comme type S_utilisateur
 
 
        Dim i As Integer ' Déclaration de i en tant qu'entier
        i = 0  ' Initialisation de i à 0
        pNbUtil = i
        Dim l_Ligne As String    ' Déclaration de l_ligne en tant que String
        Dim Montableau() As String ' Déclaration du tableau
        Dim MonUtilisateur As S_Utilisateur 'Déclaration de MonUtilisate
 
 
        While FinFichier(l_fichier) = False ' Boucle tant que pour la lecture du fichier
 
 
            l_Ligne = LireLigne(l_fichier) ' Lecture de la ligne avec la fonction lireligne
            Montableau = DecoupeChaine(l_Ligne, ";") ' Découpage des lignes avec comme séparation le ; et ajout dans MonTableau
            MonUtilisateur = CreStructureUtilisateur(Montableau(0), Montableau(1)) ' Appel à la fonction CreStrucureUtilisateur qui constiture le login et le mot de passe à partir du nom et prénom dans le fichier texte
            tableutil(i) = MonUtilisateur ' Ajout de la variable MonUtilisateur dans tableutil
            i = i + 1
        End While
        FermerFichier(l_fichier) ' Fermeture du fichier grace à la fonction FermerFichier
        Return tableutil ' On retourne la valeur tableutil
    End Function
 
    Public Function CreStructureUtilisateur(ByVal pNom As String, ByVal pPrenom As String) As S_Utilisateur
 
 
        Dim l_Utilisateur As S_Utilisateur ' Déclaration de l_Utilisateur comme type S_Utilisateur
 
 
        l_Utilisateur.Nom = pNom ' Dans la variable l_Utilisateur nous appelons la variable Nom présent dans S_utilisateur
        l_Utilisateur.Prenom = pPrenom ' Dans la variable l_Utilisateur nous appelons la variable Prénom présent dans S_utilisateur
        l_Utilisateur.Login = SousChaine(pPrenom, 0, 1) & pNom
        l_Utilisateur.MP = SousChaine(pNom, 0, 2) & SousChaine(pPrenom, 0, 2)
        Return l_Utilisateur
    End Function
End Module
Mon problème est que dans l'invite de commande il m'afiche les 999 lignes.
Si je modifie tableutil(999) par tableutil(3), il m'affiche bien les utilisateurs.

Merci de votre aide.