Recopier la ligne n+1 et n+2 en fonction de la ligne n [Résolu]

Signaler
Messages postés
23
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
7 août 2011
-
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour à tous!

J'ai fais quelques recherches sur le site mais je n'arrive pas à me dépatouiller de mon petit problème dû en partie au fait que je débute sur Visual Basic je pense.

J'ai un fichier texte avec les infos suivantes par exemple rangées en colonnes comme cela :

Thomas
12
45
8
Paul
23
60
4
Franck
10
23
2

J'ai 1 label (dans lequel j'inscris un prénom) et 3 textbox (dans lesquels je souhaite inscrire les chiffres correspondants).
Je cherche à écrire un petit bout de programme qui ouvre mon fichier texte, compare le prénom que je rentre dans mon label.caption avec toutes les lignes de mon fichier texte puis dès que mon label.caption = la ligne du fichier texte on recopie les 3 lignes suivantes dans mes textbox.
Exemple : je tape Paul dans mon caption et les textbox se remplissent avec 23, 60 et 4.

J'espère être assez clair n'hésiter pas si vous ne comprenez pas bien. J'ai fais des petits bouts de programme mais j'ai quelques erreurs : recopie le même chiffre 3 fois, messages d'erreurs, etc ...

Merci d'avance pour votre aide

3 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Petit oubli de ma part : avant la déclaration de tPersonne, ajoute un Option Explicit. Ca t'évitera de perdre du temps pour des conneries de variables non déclarées

Voici l'algo, y'a plus qu'à traduire en VB6 :
Tant que (pas fin de fichier),
 Redim Preserve Personnes(i)
 lis la ligne et place le résultat dans Personnes(i).Prenom
 lis les trois autres lignes et place leur contenu dans les variables Personnes(i).NombreX
 incrémente i
Fin tant que


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Déjà ça serait une bonne idée de stocker ça en mémoire (tu pourras manipuler plus facilement la structure). Une fois que c'est fait, il te suffit de parcourir la structure à la recherche du nom que tu veux et une fois que tu l'as trouvé, tu n'as plus qu'à accéder à la variable que tu veux. Exemple (à coller dans un module) :

Public Type tPersonne
 Prenom As String
 Nombre1 As Integer
 Nombre2 As Integer
 Nombre3 As Integer
End Type

Public Personnes() As tPersonne

Public Function ChargeFichier(Fichier As String) As Boolean
'Renvoit True si OK
'-- LECTURE DU FICHIER ICI ---
End Function

Public Function CherchePersonne(Prenom As String) As Integer
'Renvoit -1 si pas trouvée
 Dim i As Integer
 For i = 0 To UBound(Personnes)
  If Personnes(i).Prenom = Prenom Then
   CherchePersonne = i
   Exit Function
  End If
 Next i
 CherchePersonne = -1
End Function

Private Sub Main()
 Dim n As Integer
 ChargeFichier "personnes.txt"
 n = CherchePersonne("Thomas")
 If n <> -1 Then
  With Personnes(n)
   MsgBox .Nombre1 & " - " & .Nombre2 & " - " & .Nombre3
  End With
 Else
  MsgBox "Personne non trouvée."
 End If
End Sub


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
23
Date d'inscription
vendredi 7 août 2009
Statut
Membre
Dernière intervention
7 août 2011

Merci beaucoup pour ta réponse mais c'est un compliqué pour moi.
J'ai mis tout ça dans un module comme tu m'as dit et j'ai nommé mon fichier texte "personnes.txt"
J'ai rajouté la ligne Open "D:\personnes.txt" For Input As #1 à la place de '-- LECTURE DU FICHIER ICI ---
Et ensuite comment l'utiliser ?
merci encore