Creation d'un fichier repertoire

Messages postés
6
Date d'inscription
mardi 10 mai 2016
Dernière intervention
28 mai 2016
- - Dernière réponse : Whismeril
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
- 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
Afficher la suite 

Votre réponse

8 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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 ...
Commenter la réponse de ucfoutu
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
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
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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.
Whismeril
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
> ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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.
Commenter la réponse de Whismeril
Messages postés
5607
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
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
ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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
cs_Le Pivert
Messages postés
5607
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 décembre 2018
> ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
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!
Whismeril
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
Bonjour LePivert, c'est bien et que je disais, c'est un import de vb6.
cs_Le Pivert
Messages postés
5607
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 décembre 2018
> Whismeril
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
C'est exact, sur le lien et dans le paragraphe précédent, il y a la méthode a utiliser en VB.Net
Whismeril
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
> cs_Le Pivert
Messages postés
5607
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
Une des méthodes, dans le cas qui semble être celui-ci à savoir un csv, perso j'utilise File.ReadAllLines(), puis un split.
Commenter la réponse de cs_Le Pivert
0
Merci
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
Whismeril
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
-
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.
Commenter la réponse de minimoix
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
0
Merci
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
Commenter la réponse de minimoix
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
12390
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 décembre 2018
0
Merci
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....

Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.