Fichier texte

Signaler
Messages postés
209
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
15 juillet 2009
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
bonjour
je travaille dans exel. j'ai fait un petit programme sympa, une calculette et quand je fais la somme on demande si le client veut une facture. si oui, je mets le tout dans un fichier texte. mais je dois voir d'abord si il est déja client.
alors pour inscrire le client dans le fichier texte je fais

Private Sub CommandButton1_Click()
Dim clients As String, montant As Integer
clients = InputBox("entrez le nom du client")
montant = InputBox("entrez le montant du client " & clients)
Open "clients" For Append As #1
Print #1, clients; vbTab; montant
Close #1
End Sub

et donc cela s'inscrit bien dans mon fichier texte. le problème est que je voudrais rappeler le fichier pour voir si le client est enregistré et je ne connais pas la syntaxe. la prochaine fois que le client durand apparait dans la facture je voudrais que cela s'inscrive dans sa colonne. et de plus, le client durand a commandé pour 100 euros. et la prochaine fois si le client durand commande pour 50 euros je voudrais que quand je fais inputbox cela mette durand 150 €

de plus j'ai remarqué que quand on fait inputbox la lecture se fait ligne par ligne. est ce que la lecture ne peut pas se faire par variable ?

merci. j'attends vos réponses avec impatience car je suis complètement coincée. j'ai beau lire tous les cours je ne comprends rien...

5 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

Citation :

"je travaille dans exel
 -----
........
j'attends vos réponses avec impatience car je suis complètement coincée. j'ai beau lire tous les cours je ne comprends rien..."

Tu voudras peut-être bien essayer de lire et comprendre le pourquoi de cette discussion :
http://www.vbfrance.com/forum/sujet-LETTRE-OUVERTE-UTILISATEURS_1222067.aspx

Tu es maintenant loin d'être un nouveau sur ce forim, n'est-ce pas ?
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour chaudier37


Si j'ai bien compris, tu veux afficher le cumul des factures précédentes. Si c'est le cas, peux-tu essayer le code ci-dessous ?


J'ai apporté quelques modifications à ton Sub afin de prendre en charge le bouton Annuler de tes deux InputBox.



Private Sub CommandButton1_Click()
    Dim clients As String, montant As String
    Dim clt As String, mont As Double, nomcli As String
    Dim mntFacture As Double
    Dim fic As String
    fic = "clients"
    mont = 0
    clients = InputBox("entrez le nom du client")
    If clients <> "" Then
        If Dir(fic) <> "" Then
            Open fic For Input As #1
            Do Until EOF(1)
                Line Input #1, clt
                nomcli = Left(clt, InStr(1, clt, vbTab) - 1)
                nomcli = Trim(LCase(nomcli))
                If nomcli = Trim(LCase(clients)) Then
                    mntFacture = Val(Mid(clt, InStr(1, clt, vbTab) + 1))
                    mont = mont + mntFacture
                End If
            Loop
            Close #1
        End If
        montant = InputBox("entrez le montant du client " & clients & _
            IIf(mont <> 0, vbCrLf & vbCrLf & _
            "Factures précédentes : " & CStr(mont) & " €", ""))
        If montant <> 0 Then
            Open fic For Append As #1
            Print #1, clients; vbTab; montant
            Close #1
        End If
    End If
End Sub


Cordialement
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,

>[../auteur/OROHENA/1483575.aspx Orohena] : on préfèrera VbNUllString à ""
On utilisera FreeFile pour savoir avec quel numéro de fichier on peu ouvrir Clients (qui soit dit en passant n'as pas de chemin ni d'extensions et qui n'est pas différents suivant Le client)

>[../auteur/CHAUDIER37/318404.aspx chaudier37] : Qu'en est il du lien que t'as proposé [../auteur/JMFMARQUES/615490.aspx jmfmarques]?

@+: Ju£i€n
Pensez: Réponse acceptée
Messages postés
577
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
20 novembre 2010
4
Bonjour

Et bien non, Julien, dans ce cas précis on préfèrera "" à VbNullString ! L'aide en ligne de la fonction InputBox précise en effet :

Si l'utilisateur clique sur le bouton Annuler, la fonction renvoie une chaîne de longueur nulle ("").

La fonction Dir(), quant à elle, ne renvoie jamais vbNullString mais, elle aussi, une chaîne de longueur nulle.

vbNullString est une chaîne de valeur 0, différente d'une chaîne de longueur nulle (""), et qui permet l'appel de procédures externes (je cite toujours l'aide en ligne).

Le fait que "" et vbNullString soient parfaitement interchangeables aujourd'hui ne présage pas que cela restera vrai dans les versions futures de VB. En revanche, il est improbable que Microsoft contredise demain ce qu'il dit aujourd'hui dans sa documentation.


Quand à FreeFile, tu as raison. Cependant je n'ai pas réécrit le sub de notre ami chaudier37, je l'ai juste adapté.


Cordialement
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
Salut,
Bon, bon d'accord...

Moi je disais cela suite à un article que j'ai lu et qui m'a donné des résultats satisfaisants dans mes programmes.Optimize string handling in Visual Basic 6.0 - Part I
Assigning an empty string to a variableThis is the usual way to clear a string variable.

Text$ = ""

What a waste! First of all, the string "" takes 6 bytes of RAM each time you use it. Consider the alternative:

Text$ = vbNullString

So what is this? vbNullString is a special VB constant that denotes a
null string. The "" literal is an empty string. There's an
important difference. An empty string is a real string. A null string is
not. It is just a zero. If you know the C language, vbNullString is the
equivalent of NULL.

For most purposes, vbNullString is equivalent to "" in VB. The only
practical difference is that vbNullString is faster to assign and
process and it takes less memory.

If you call some non-VB API or component, test the calls with
vbNullString before distributing your application. The function you're
calling might not check for a NULL string, in which case it might crash.
Non-VB functions should check for NULL before processing a string
parameter. With bad luck, the particular function you're calling does
not do that. In this case, use "". Usually APIs do support
vbNullString and they can even perform better with it!

@+: Ju£i€n
Pensez: Réponse acceptée