Creation d'un fichier repertoire

minimoix Messages postés 6 Date d'inscription mardi 10 mai 2016 Statut Membre Dernière intervention 28 mai 2016 - 28 mai 2016 à 14:03
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 - 8 juin 2016 à 16:27
salut tout le monde bon j'avance un peu dans mon programme de répertoire téléphonique mais je suis toujours bloqué! j'ai quelques erreur mais je ne sais pas comment les corriger merci votre aide!!
ça me dit:
que la fonction téléphone ne retourne aucune valeur
que la valeur nomlu, prenomlu et tellu est passé par référence avant qu'une valeur ne lui est été assignée

Module Module1
Function telephone(ByVal nom As String, ByVal prenom As String) As String
If Not existe(nom, prenom) Then
telephone = "non trouvé"
Else
Dim fichierrepertoire As Integer
Dim nomlu, prenomlu, tellu
fichierrepertoire = FreeFile()
FileOpen(fichierrepertoire, "c:\users\simon\desktop\repertoire.txt", OpenMode.Input)
While Not EOF(fichierrepertoire)
Input(fichierrepertoire, nomlu)
Input(fichierrepertoire, prenomlu)
Input(fichierrepertoire, tellu)
If nomlu = nom And prenomlu = prenom Then
telephone = tellu

End If
End While
FileClose(fichierrepertoire)
End If
End Function

Function existe(ByVal nom As String, ByVal prenom As String) As Boolean
If Dir("c:\users\simon\desktop\repertoire.txt") = "" Then
existe = False
Else
Dim fichierrepertoire As Integer
Dim nomlu, prenomlu, tellu As String, trouvé As Boolean
fichierrepertoire = FreeFile()
FileOpen(fichierrepertoire, "c:\users\simon\desktop\repertoire.txt", OpenMode.Input)
trouvé = False
While Not EOF(fichierrepertoire) And Not trouvé
Input(fichierrepertoire, nomlu)
Input(fichierrepertoire, prenomlu)
Input(fichierrepertoire, tellu)
If nomlu = nom And prenomlu = prenom Then
trouvé = True
End If
End While
FileClose(fichierrepertoire)
existe = trouvé
End If
End Function

Sub ajoute(ByVal nom As String, ByVal prenom As String, ByVal tel As String)
If Not existe(nom, prenom) Then
Dim fichierrepertoire = FreeFile()
FileOpen(fichierrepertoire, "c:\users\simon\desktop\repertoire.txt", OpenMode.Append)
PrintLine(fichierrepertoire, nom, prenom, tel)
FileClose(fichierrepertoire)
End If
End Sub
Dim nom, prenom, tel
Sub Main()


restaureconfig()
Dim f As Integer
f = FreeFile()
FileOpen(f, "c:\users\simon\desktop\repertoire.txt", OpenMode.Output)
PrintLine(f, "nom", "prenom", "tel")
FileClose(f)
sauveconfig()
End Sub
Sub sauveconfig()
Dim fichierconfig = FreeFile()
FileOpen(fichierconfig, "c:\users\simon\desktop\config.ini", OpenMode.Output)
WriteLine(fichierconfig, nom, prenom, tel)
FileClose(fichierconfig)
End Sub

Sub restaureconfig()
Dim fichierconfig As Integer
fichierconfig = FreeFile()
FileOpen(fichierconfig, "c:\users\simon\desktop\config.ini", OpenMode.Input)
Input(fichierconfig, nom)
Input(fichierconfig, prenom)
Input(fichierconfig, tel)
FileClose(fichierconfig)
End Sub
End Module

8 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 mai 2016 à 14:51
Bonjour,
ou j'ai perdu la vue, ou ne figure nulle part, dans le code montré, l'appel que tu fais de la fonction telephone ... et c'est probablement cet appel, qui est fautif ...
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
Modifié par Whismeril le 28/05/2016 à 15:27
Bonjour

Tes problèmes n'ont aucun rapport avec ton titre...Il s'agit juste de syntaxe de VB.Net, ou pas d'ailleurs car le code que tu montres c'est du VB6 ou du VBA.

Afin de maximiser les chances de réponses adaptées, un titre judicieux est conseillé.

D'autre part, les règles du forum précise qu'une question ne devrait concerner qu'un problème à la fois, mais bon là c'est tellement simple....

Problème 1
Le fait que tu déclares "telephone" comme étant une Function implique que cette méthode donne un résultat, et ce quelque que soit les cas.
Or l'algorithme détecte un cas ou il n'y aura pas de résultat (même si selon toi ce cas n'est pas possible), à savoir que si tu passes dans la clause Else et que ta recherche dans le fichier ne trouve pas d'occurrence, alors ta fonction ne retournera rien, c'est cela que le compilateur te signale.

Problème 2
           Dim nomlu, prenomlu, tellu 'tes variables existent mais ne valent rien
            fichierrepertoire = FreeFile()
            FileOpen(fichierrepertoire, "c:\users\simon\desktop\repertoire.txt", OpenMode.Input)
            While Not EOF(fichierrepertoire)
                Input(fichierrepertoire, nomlu)'je suppose que cette méthode nécessite que la variable vaille quelque chose, je dis que je suppose (sans trop m'avancer non plus) car tu n'as pas précisé la ligne de l'erreur ni montré le code de cette méthode.
                Input(fichierrepertoire, prenomlu)'idem
                Input(fichierrepertoire, tellu)'et encore idem
                If nomlu = nom And prenomlu = prenom Then
                    telephone = tellu

                End If
            End While


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/05/2016 à 16:37
Bonjour, Whismeril,
Je ne sais pas sous quoi il développe (un mélange de tout ?), mais ni la méthode FileOpen, ni la méthode PrintLine ne sont connues au bataillon, tant en VB6 qu'en VBA.
Cela "sent" (peut-être ?) l'utilisation de AutoIt.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
28 mai 2016 à 16:47
Salut, uc nos message se sont croisé, j'avais laissé en plan la rédaction avant d'y revenir!

Pour ces deux méthodes, ce sont peut être aussi celles de son programme.

Je ne connais pas AutoIt, je ne serais dire.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
28 mai 2016 à 17:36
Bonjour à tous,

Voir ce lien dont j'apprécie le sous-titre!

http://plasserre.developpez.com/cours/vb-net/?page=langage-vb8#LV-AC-5
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/05/2016 à 17:47
Bonjour, Le Pivert,
Je ne suis pas certain de ce qu'il veuille vraiment faire autre chose (y compris ce qu'il pourrait lire).
Cette discussion nous en apprend beaucoup :
http://codes-sources.commentcamarche.net/forum/affich-10064814-fichier-sequentiel
Il est "scotché" à son mélange des genres, au prétexte que c'est ce qu'on lui a enseigné à ce stade.
(et je ne sais toujours personnellement pas de quel chapeau est sorti son "PrintLine")

EDIT : ah (trouvé) : de là :
https://msdn.microsoft.com/fr-fr/library/9cksc646%28v=vs.90%29.aspx
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
28 mai 2016 à 18:01
Dans le message que tu cites, il aurait dû suivre les conseils de NHenry. Là c'est un mélange des genres, il est difficile de l'aider!
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
28 mai 2016 à 17:47
Bonjour LePivert, c'est bien et que je disais, c'est un import de vb6.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137 > Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024
28 mai 2016 à 18:04
C'est exact, sur le lien et dans le paragraphe précédent, il y a la méthode a utiliser en VB.Net
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
28 mai 2016 à 18:26
Une des méthodes, dans le cas qui semble être celui-ci à savoir un csv, perso j'utilise File.ReadAllLines(), puis un split.
0
ben oui je me doute bien mais je vois pas trop ce que j'aurai du rajouter, peux tu me dire ce qu'il aurait fallu mettre stp
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
30 mai 2016 à 13:08
BONJOUR si si,quand on revient après 2 jours, un peu de politesse c'est pas mal aussi.

As tu lu toute la discussion avant de répondre à Uc?
Si oui, tu devrais recommencer.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 30/05/2016 à 13:09
peux tu me dire ce qu'il aurait fallu mettre stp

Ben .... euh ... ah .... oh ... : ce qui t'a, ma foi, été demandé :
l'appel que tu fais de la fonction telephone

C'est du "chinois", pour toi, cela ???????
Tu préfères que j'utilise une autre langue que le français ? Laquelle ?

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
bon alors par ou commencer ! lol
deja si je met du temps a repondre c'est parce que je cumule 3 emploi qui me prenne 80 heures par semaine en plus de mes cours(ce n'est pas une excuse mais juste une explication!)
en suite apres avoir lu tous vos commentaires, je trouve pour la plupart, que vous etes assez dur, moi qui debute dans la programmation et qui suit les cours par correspondance(c 'est a dire seul) c pas si simple! j'avais pensé que sur un forum de programmation les gens aurait ete un peu plus comprehensif et un peu plus patient , apres tout on a tous commencé a apprendre a un moment ou a un autre!
pour ce qui est de la fonction print elle fait parti de mon cours je ne l'ai pas inventé, apres j'entend bcp que je melange les genres, si vous le dites c surement vrai , pourtant je n'utilise que ce qui est ecrit dans les cours, donc je suis perdu maintenant!
apres on me renvoi bcp de lien vers des docs ou des cours mais du coups je vois pas l'interet du forum si c juste pour balancer des liens sans me les expliquer clairement!
peut etre qu'apres je n'ai pas compris moi meme le principe du forum!
en tout cas merci a ceux qui ont essayé de m'aider, mais je pense que je me debrouiller seul parce que si je dois faire le tri entre les remarque desagreable et les reproches je perds mon temps
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 8/06/2016 à 14:42
peut etre qu'apres je n'ai pas compris moi meme le principe du forum!

C'est toi qui le dis et c'est exactement cela.
La vocation de ce forum n'est en tout état de cause pas de limiter ses propositions de solution aux connaissances acquises en cours, ni d'aider à faire un exercice scolaire ou de stage.
Certaines choses t'ont été dites et demandées. Tu n'en tiens aucun compte, au prétexte que ceci ou cela ...
Reste alors avec tes "démarches" et n'en fais pas un "cadre" que NOUS devrions observer nous-mêmes.
Ou alors : cherche l'existence d'un site du genre "fais_mes _devoirs.com" et donne-lui l'énoncé du devoir qu'il t'est demandé de faire, avec les limites qui te sont imposées pour ce faire.
Bonne chance dans tes "récoltes".

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
Whismeril Messages postés 19024 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 18 avril 2024 656
8 juin 2016 à 16:27
BONJOUR
on est peut être désagréables quand on te dis une chose et que tu réponds à coté de la plaque, mais au moins, je commence par bonjour moi.

Le fait est que ce forum n'a pas vocation à te donner directement la solution, mais à te faire réfléchir.
On retient mieux ce que l'on a trouvé et compris par soi même, que ce qu'on a bêtement recopié.

Donc à ma première intervention, je t'ai orienté vers tes 2 problèmes.
Qu'à tu fait / essayé / compris / non compris de ce que j'ai écrit?
Car à part
ben oui je me doute bien mais je vois pas trop ce que j'aurai du rajouter, peux tu me dire ce qu'il aurait fallu mettre stp
que tu adresses à on ne sait qui, tu n'as guère donné de retour technique.

D'autre part, si ton cours fait l'erreur de t'apprendre comment faire de vb6 dans vb.net, on n'y peut rien.
Et que tu sois perdu et malheureusement logique car il s'agit de 2 philosophie différentes.

Tu peux éventuellement changer de cours.
Celui de P Lassere est pas mal, même s'i s'adressant aussi bien aux anciens vb6istes qu'aux purs débutants, et donc montre les 2 aspects.

Mais si tu suis les conseils de NHenri ici http://codes-sources.commentcamarche.net/forum/affich-10064814-fichier-sequentiel#1
Tu verras que la moitié de ton code sera souligné en rouge....

0
Rejoignez-nous