IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[Debutant]Lire dans un fichier texte


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut [Debutant]Lire dans un fichier texte
    Bonjour je suis débutant en VB mon patron me demande quelque chose d'un peu complexe pour moi ! :s
    J'ai quand meme déja délimité les grandes étapes.
    JE vous explique on a un vieu logiciel qui peut recevoir des macros VB
    On doit grace a cette macro remplir la configuration nécessaire a une connexion (Ca c'est bon j'y arrive)

    Donc premierement, je dois trouver le hostname de la machine et ensuite le comparer a un fichier texte de cette forme :

    NOM_POSTE1 TUTU1
    NOM_POSTE2 TUTU2
    NOM_POSTE3 TUTU3

    Donc en ayant récupéré le hostname(NOM_POSTE1) il faut que j'arrive a récupérer la valeur associée (TUTU1) pour ensuite copier cette valeur dans ma config que j'arrive a faire plus haut

    Donc voila je sais pas si ca vous parait simple ou pas !
    J'espere que vous pourrez m'aider

  2. #2
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Si je comprends bien, il suffit de récupérer TUTU1 par exemple ?

    en utilisant la fonction Instr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    maVar = "NOM_POSTE1 TUTU1"
    maChaine = mid(mavar,instr(mavar," ")+1)
    On pourrait aussi utiliser la fonction Split (regarde l'aide à son sujet)
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Oui voila mais avant ca je dois reussir a choper le hostname :s
    S'il récupere NOM_POSTE1 ,je vais devoir mettre ici : .Hostname = "NOM_POSTE1"
    Et ensuite aller dans le fichier chercher la valeur qui lui est affectée et la copier ici : .DeviceName = "TUTU1"

  4. #4
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Mais c'est quoi la question exactement ? recupérer "NOM_POSTE1" dans ta chaine exemple ? Tu l'as récupéré cette chaine ou pas ? elle vient d'où ?

    Faut expliquer un peu mieux !
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Désolé c'est difficile a expliquer.


    Il faut que j'arrive a récupérer le hostname de la machine (le nom du poste sur lequel se lancera la macro) une fois récupérée il faut que je puisse aller chercher la valeur correpondante dans mon fichier

    j'essaye un exemple

    Je récupère la valeur NOM_POSTE1 ensuite je vais chercher mon fichier texte je le lis et dès que je trouve NOM_POSTE1 je cherche la valeur associée.
    Il faut ensuite que je copie cette valeur (ici TUTU1) dans .DeviceName (donc cela donnerait .DeviceName = "TUTU1"

    Plus clair ou toujours aussi flou ?

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Parcourur, ligne par ligne, un fichier texte plat jusqu'à y trouver une ligne commençant par ce que tu cherches est toujours possible (des centaines d'exemple sur ce forum !)
    Une fois la ligne trouvée : lire ce qui se trouve derrière l'espace est simple (et la solution t'a été donnée plus haut ...)


    Un fichier plat me parait là un peu lourd, toutefois, ... je donnerais la préférence à un fichier texte (écrit par Put) structuré en base de données ...

  7. #7
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Tu as déjà réussi à lire le fichier ? Si oui

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim NomHoteEtValeurAssociee() As String, LigneFichier As String
    ' autres déclarations pour l'ouverture et la lecture du fichier texte
    Dim NumFichier As Integer, NomFichier As String
    NumFichier = FreeFile
    ' Choix du fichier 
    ' peut se faire avec un CommonDialog - voir les Composants supplémentaires
    NomFichier = "C:\Chemin\nomDuFichier.txt" 
    ' Code de l'ouverture et de lecture du fichier du fichier
    Open NomFichier For Input As #NumFichier  ' il me semble...
    Do While Not EOF(NumFichier)
        Input NumFichier, LigneFichier
        ' C'est ici que ça devient intéressant
        ' Sépare la ligne sur l'espace
        '                          -v-v-v-v-v-v-v-v-v-v-v-
        NomHoteEtValeurAssociee = Split(LigneFichier, " ") 
        '                          -^-^-^-^-^-^-^-^-^-^-^-
        Debug.Print NomHoteEtValeurAssociee(0), NomHoteEtValeurAssociee(1)
    Loop
    Close NumFichier
    Cet exemple lit le fichier ligne par ligne et affiche dans la fenêtre d'exécution (menu Affichage) le contenu de chaque ligne placé dans un tableau nommé NomHoteEtValeurAssociee.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci j'ai essayé d'adapter le code pour moi mais j'ai une erreur a cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Input NumFichier, LigneFichier
    En tout cas c'est sympa de se pencher sur le problème avec moi ^^

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    tu aurais quand même pu corriger toi-même (ouvre donc ton aide en ligne de temps à autre...)
    C'est Line Input et non Input
    et n'oublie pas de déclarer LigneFichier as string avant

  10. #10
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 182
    Points
    17 182
    Par défaut
    Ma petite contribution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Dim CheminNomFichier As String
    Dim NumFich As Integer
    Dim Msg$
    CheminNomFichier = "C:\PersoFrancis\LesDonnéesRserv.txt"
    Msg$ = ""
    NumFich = FreeFile
    Open CheminNomFichier For Input As #NumFich
    'recuperation du fichier en entier dans la variable Msg$
    Msg$ = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If Msg$ = "" Then
     MsgBox "le fichier est vide", vbCritical
     Unload Me
    End If
     
    Dim leHostname As String
    'tu sais deja recuperer sa, moi je le met dans une variable pour l'exemple
    leHostname = "NOM_POSTE1" & " " 'je lui ajoute l'espace separant NOM_POSTE1 de la valeur recherchée
     
     
    Dim Deb As Long, Fin As Long
    'pour trouver la position du debut du mot "NOM_POSTE1 "
    Deb = InStr(Msg$, leHostname)
    'se placer au debut de la valeur recherchée, (position + sa longueur)
    Deb = Deb + Len(leHostname)
    Fin = Deb 'pour rechercher a partir du debut de la valeur recherchée,
    'non pas du debut de la variable qui contient le contenu du fichier
    'vbCrLf, saut de ligne, tout de suite apres la valeur recherché
    Fin = InStr(Fin, Msg$, vbCrLf)
    Dim valeurAssocier As String
    'Extraction de la valeur recherchée
    valeurAssocier = Mid(Msg$, Deb, Fin - Deb)
     
     .HostName = Left(leHostname, Len(leHostname) - 1)    'pour enlever l'espace
     .DeviceName = valeurAssocier
    Cela n'empechant pas que les propositions deja faites par les copains sont chacune valable, le detail (commentaire dans le code) pouvant peut être d'aider.
    Citation Envoyé par Alecine
    je suis débutant en VB
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup a tous je vais maintenant essayer de mettre tout ca en forme !
    Merci pour le coup de pouce ^^

Discussions similaires

  1. Réponses: 11
    Dernier message: 25/01/2007, 18h20
  2. Réponses: 13
    Dernier message: 09/11/2006, 23h37
  3. [VB.NET]comment écrire/lire dans un fichier text
    Par zouhib dans le forum Windows Forms
    Réponses: 1
    Dernier message: 19/05/2006, 17h11
  4. Ecrire et lire dans un fichier texte
    Par podz dans le forum C
    Réponses: 3
    Dernier message: 25/10/2005, 16h57
  5. [Débutant] Lecture dans un fichier texte
    Par babemagus dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 07/07/2005, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo