Bonjour,
Je dois créer un programme permettant, une fois la saisie des données effectuée, un affichage ligne à ligne des saisies. Je dois utiliser une structure avec un tableau en mémoire à une dimension.
Au moment de l'affichage, le programme coupe et m'affiche l'erreur "L'index se trouve en dehors des limites du tableau" sur la ligne 24 de mon code.
Module test012
Structure Produit
Dim refprod, desiprod As String
Dim puth As Double
Dim qteprod As Integer
End Structure
Sub main()
Console.ForegroundColor = ConsoleColor.Yellow
Dim i As Integer
Dim infoprod(2) As Produit
For i = 0 To 2
Console.Write("Saisir la référence du produit : ")
infoprod(i).refprod = Console.ReadLine
Console.Write("Saisir la désignation : ")
infoprod(i).desiprod = Console.ReadLine
Console.Write("Saisir le prix unitaire ht : ")
infoprod(i).puth = Console.ReadLine
Console.Write("Saisir la quantité en stock : ")
infoprod(i).qteprod = Console.ReadLine
Next
Console.WriteLine("{0} {1} {2}", infoprod(i).refprod, infoprod(i).refprod, infoprod(i).refprod)
Console.Read()
End Sub
End Module
Je requiers alors votre aide pour trouver une solution. Merci.
ton tableau contient, 2 éléments, index 0 et index 1
de la ligne 13 à 22, tu fais un for, qui tourne tant que i est inférieur à 2, donc on passe à la ligne 24 quand i vaut 2, cet index est bien au delà de l'index max
Je pensais qu'un index 2 correspondait à 3 éléments (0, 1 et 2), alors que non. Merci de me l'avoir fait remarquer.
Mais même en corrigeant cette erreur, il n'y a pas d'affichage. Le terminal se ferme après la saisie des données. Je ne vois pas où peut être le problème.
Houla, je m’aperçois que je n’ai pas été clair.
Un index 2 correspond au 3 eme enregistrement, ce qui posait problème dans ton code c’est qu’il n’y a pas de 3eme enregistrement puisqu’il n’y en a que 2
Bonsoir à vous deux
Effectivement ton tableau n'a que 2 éléménts
Une astuce que j'utilise toujours
Je ne mets pas comme code
Dim infoprod(3) As Produit
mais
Dim infoprod(0 to 2) As Produit
Dans le second cas tu as les bornes inférieures et supérieures du tableau et cela est plus parlant .
Tu dis ne rien voir : regarde ta boucle For = elle va de 0 à 2 pour les 3 produits
En fin de boucle i est donc à 3 lorsque tu as fais les 3 saisies : la saisie 0, la saisie 1 et la saisie 2
Vu que i vaut 3 les affichages ne peuvent se faire ( i va de 0 à 2 )
Essaie ce code et regardesl'image plus bas
Structure Produit
Dim refprod, desiprod As String
Dim puth As Double
Dim qteprod As Integer
End Structure
Sub Main()
Console.ForegroundColor = ConsoleColor.Yellow
Dim i As Integer
Dim infoprod(0 To 2) As Produit
For i = 0 To 2
' saisie des informations
Console.Write("Saisir la référence du produit : ")
infoprod(i).refprod = Console.ReadLine
Console.Write("Saisir la désignation : ")
infoprod(i).desiprod = Console.ReadLine
Console.Write("Saisir le prix unitaire ht : ")
infoprod(i).puth = Console.ReadLine
Console.Write("Saisir la quantité en stock : ")
infoprod(i).qteprod = Console.ReadLine
Console.WriteLine()
' Affichage des 3 lignes de produit
Console.WriteLine("{0} {1} {2} {3}", infoprod(i).refprod, infoprod(i).desiprod, infoprod(i).puth, infoprod(i).qteprod)
Next
Console.Read()
End Sub
Bonsoir !
Pas sûr que ceci soit correct au message précédent :
Tu dis ne rien voir : regarde ta boucle For = elle va de 0 à 2 pour les 3 produits
En fin de boucle i est donc à 3 lorsque tu as fais les 3 saisies : la saisie 0, la saisie 1 et la saisie 2
Vu que i vaut 3 les affichages ne peuvent se faire ( i va de 0 à 2 )
Mais même en corrigeant cette erreur, il n'y a pas d'affichage. Le terminal se ferme après la saisie des données. Je ne vois pas où peut être le problème.